專案配置最佳實踐
配置做得好,Claude Code用起來順手。配置不好,Claude老是誤解你的意思,生成一堆不合規範的程式碼,甚至引入安全漏洞。
下面聊聊怎麼配置專案,讓Claude Code真正成為你的得力助手。
為什麼要重視配置
配置不好的代價
沒配置CLAUDE.md:
你: 创建一个用户列表组件
Claude: [创建了 UserList.js]
- 用了类组件(项目已经全面迁移函数式组件)
- 文件名驼峰命名(项目要求kebab-case)
- inline样式(项目要求CSS Modules)
- 没TypeScript类型(项目是TS)
你: 不对不对,都不符合规范...[开始返工]
返工: 15分钟
配置完善後:
你: 创建一个用户列表组件
Claude: [创建了 user-list.tsx]
✓ 函数式组件 + TypeScript
✓ kebab-case命名
✓ CSS Modules
✓ 完整类型定义
✓ 符合项目规范
✓ 包含测试框架
一次到位,不用改
省了15分钟 + 避免错误
資料說話:
| 配置情況 | 效率提升 | 錯誤減少 | 一次對率 |
|---|---|---|---|
| 基礎配置 | 40% | 60% | 75% |
| 完整配置 | 70% | 85% | 95% |
| 沒配置 | 0% | 0% | 30% |
CLAUDE.md完整模板
企業級完整模板
這是一個適用於中大型專案的CLAUDE.md完整模板,涵蓋所有關鍵配置項:
# 项目名称: [Your Project Name]
## 项目概述
[1-2句话描述项目的核心功能和目标]
- **项目类型**: [Web应用/移动应用/桌面应用/API服务等]
- **主要用户**: [目标用户群体]
- **核心价值**: [项目解决的核心问题]
- **当前状态**: [开发中/生产环境/维护模式]
## 技术栈
### 核心框架
- **前端**: [框架名称] [版本]
- **后端**: [框架名称] [版本]
- **数据库**: [数据库类型] [版本]
- **运行时**: [Node.js/Python/Java等] [版本要求]
### 开发工具
- **语言**: [TypeScript/JavaScript/Python等] [版本]
- **构建工具**: [Vite/Webpack/Parcel等]
- **包管理器**: [npm/yarn/pnpm]
- **版本控制**: Git
- **CI/CD**: [GitHub Actions/GitLab CI等]
### 依赖管理
```json
// package.json關鍵依賴示例
{
"dependencies": {
"react": "^18.2.0",
"typescript": "^5.0.0"
}
}
项目架构
架构模式
- 设计模式: [MVC/微服务/分层架构/单体架构等]
- 目录组织: [功能模块/技术分层/混合方式]
目录结构
project-root/
├── src/ # 原始碼目錄
│ ├── components/ # [說明]
│ ├── pages/ # [說明]
│ ├── hooks/ # [說明]
│ ├── utils/ # [說明]
│ ├── services/ # [說明]
│ └── types/ # [說明]
├── tests/ # 測試目錄
├── docs/ # 文件目錄
├── config/ # 配置檔案
└── scripts/ # 構建和部署指令碼
模块划分
- 模块A: [职责和边界]
- 模块B: [职责和边界]
- 共享模块: [哪些是共享的]
编码规范
命名约定
文件命名
- 组件文件:
PascalCase.tsx(如UserProfile.tsx) - 工具文件:
kebab-case.ts(如format-date.ts) - 样式文件:
*.module.css(如UserProfile.module.css) - 测试文件:
*.test.ts(如utils.test.ts)
代码命名
// 類和介面: PascalCase
class UserService {}
interface UserProfile {}
// 函式和變數: camelCase
function getUserData() {}
const userName = 'John';
// 常量: UPPER_SNAKE_CASE
const MAX_RETRY_COUNT = 3;
// 私有成員: _prefix
private _internalState = {};
// TypeScript型別: PascalCase + Type/Interface字尾
type UserType = {};
interface UserConfig {}