Claude Code: 项目初始化与项目结构

最后更新:2026-08-31

Claude Code 在进入项目时会自动分析项目结构,但你也可以通过 CLAUDE.md 主动引导它理解项目的约定和架构。

💡 提示:项目初始化不仅是 Claude Code 读取文件,更重要的是它如何理解项目的"隐式约定"——编码风格、目录规范、测试策略等。CLAUDE.md 就是这些约定的显式载体。

📋 前置知识:第五章 VS Code 与 JetBrains 集成

1. 你将学到


2. Claude Code 如何理解项目

(1) 自动分析流程

100%
graph TB
    A[进入项目目录] --> B[读取 CLAUDE.md]
    B --> C[扫描目录结构]
    C --> D[识别框架/语言]
    D --> E[读取关键配置文件]
    E --> F[构建上下文]
步骤 读取文件 目的
CLAUDE.md 项目根目录 CLAUDE.md 获取项目约定和指令
配置文件 package.json, pom.xml, go.mod 等 识别技术栈和依赖
目录结构 src/, lib/, tests/ 等 理解代码组织方式
README README.md 获取项目概述

(2) 识别的技术栈

配置文件 识别结果 自动行为
package.json Node.js 项目 使用 npm/yarn/pnpm
pom.xml Java Maven 使用 mvn 命令
build.gradle Java Gradle 使用 gradle 命令
go.mod Go 项目 使用 go 命令
requirements.txt Python 项目 使用 pip/pytest
Cargo.toml Rust 项目 使用 cargo 命令

▶ 示例 1: 项目分析输出

TEXT 📖 仅展示
$ claude

╭─ Claude Code ──────────────────────────────╮
│  Project Analysis:                          │
│  Type:      Node.js / TypeScript            │
│  Framework: Express.js                      │
│  Test:      Jest                            │
│  Package:   npm                             │
│  Structure:                                 │
│    src/                                     │
│      routes/      (12 route files)          │
│      models/      (8 model files)           │
│      middleware/   (4 files)                │
│      utils/        (6 utility files)        │
│    tests/                                   │
│    config/                                  │
│  Key deps: express, mongoose, jest          │
╰─────────────────────────────────────────────╯

3. CLAUDE.md 项目配置

(1) 自动生成 CLAUDE.md

BASH
# 让 Claude Code 分析项目并生成 CLAUDE.md
claude /init

# 生成的 CLAUDE.md 包含:
# - 项目描述
# - 技术栈
# - 构建和测试命令
# - 代码风格约定
# - 目录结构说明

(2) 手动编写 CLAUDE.md

MARKDOWN
# CLAUDE.md

## 项目概述
电商后台管理系统,使用 Express + TypeScript + Prisma

## 技术栈
- Runtime: Node.js 20
- Framework: Express 4.x
- ORM: Prisma 5.x
- Test: Vitest
- Lint: ESLint + Prettier

## 常用命令
- 开发: `npm run dev`
- 构建: `npm run build`
- 测试: `npm test`
- Lint: `npm run lint`

## 代码约定
- 使用 ES Module 语法
- 所有 API 响应使用统一格式 { code, data, message }
- 错误处理使用自定义 AppError 类
- 路由文件放在 src/routes/ 下
- 每个 route 文件对应一个 test 文件

## 不要做的事
- 不要使用 var,只用 const/let
- 不要直接使用 mongoose,用 Prisma
- 不要修改 prisma/schema.prisma 除非明确要求

▶ 示例 2: 针对不同项目的 CLAUDE.md

MARKDOWN
<!-- Go 项目的 CLAUDE.md -->
# CLAUDE.md

## 项目
RESTful API 服务,Go 1.22 + Gin + GORM

## 命令
- 运行: `go run ./cmd/server`
- 测试: `go test ./...`
- 构建: `go build -o bin/server ./cmd/server`

## 约定
- 使用标准项目布局(cmd/, internal/, pkg/)
- 错误返回使用 pkg/errors 包
- 所有 handler 接收 gin.Context
- 数据库操作只在 repository 层

4. 项目结构最佳实践

(1) 对 Claude Code 友好的项目结构

特征 友好 不友好
目录层级 3-4 层,清晰命名 10+ 层嵌套
文件命名 一致的命名规范 随意命名
配置文件 标准位置 散落各处
测试位置 集中或就近 没有测试
文档 README + CLAUDE.md 无文档

(2) 大型项目优化

▶ 示例 3: 大型项目的上下文管理

MARKDOWN
<!-- 大型项目的 CLAUDE.md(精简版)-->
# CLAUDE.md

## 项目结构(只列核心)
- src/core/       核心业务逻辑
- src/api/        API 路由和控制器
- src/models/     数据模型
- src/utils/      工具函数
- tests/          测试

## 工作范围
- 当前主要开发 src/api/ 目录
- 测试使用 Jest
- 数据库使用 Prisma

## 重要约束
- 所有数据库操作必须通过 Prisma Client
- API 响应格式遵循 RFC 7807 Problem Details
- 认证使用 JWT,密钥从环境变量读取

5. 多语言/多模块项目

(1) Monorepo 支持

TEXT 📖 仅展示
my-monorepo/
├── CLAUDE.md           # 全局配置
├── packages/
│   ├── frontend/
│   │   └── CLAUDE.md   # 前端子项目配置
│   ├── backend/
│   │   └── CLAUDE.md   # 后端子项目配置
│   └── shared/
│       └── CLAUDE.md   # 共享库配置
├── package.json
└── turbo.json

(2) 子目录独立配置

BASH
# 在不同子目录启动 Claude Code 会读取对应的 CLAUDE.md
cd packages/frontend && claude  # 读取 frontend/CLAUDE.md
cd packages/backend && claude   # 读取 backend/CLAUDE.md

6. 综合示例:项目初始化全流程

BASH
# Alice 为新项目做完整初始化

# 1. 创建项目
mkdir ecommerce-api && cd ecommerce-api
npm init -y

# 2. 初始化 git
git init

# 3. 启动 Claude Code 生成项目骨架
claude "初始化一个 Express + TypeScript 项目:
1. 配置 tsconfig.json
2. 设置 ESLint + Prettier
3. 创建 src/ 目录结构(routes, controllers, models, middleware, utils)
4. 配置 Jest 测试
5. 创建 .gitignore
6. 生成 CLAUDE.md"

# Claude Code 输出:
# → Creating tsconfig.json
# → Creating .eslintrc.js and .prettierrc
# → Creating directory structure...
# → Configuring Jest
# → Creating .gitignore
# → Generating CLAUDE.md based on project setup
# → Running: npm run build ✓

# 4. 检查生成的 CLAUDE.md
cat CLAUDE.md

# 5. 根据需要调整 CLAUDE.md
# 添加团队特定约定...

# 6. 提交初始状态
git add -A && git commit -m "feat: project initialization"

❓ 常见问题

Q CLAUDE.md 和 README.md 有什么区别?
A README 是给人看的项目说明;CLAUDE.md 是给 Claude Code 看的工作指令。CLAUDE.md 更关注编码约定、常用命令和约束。
Q 项目太大,Claude Code 读不完怎么办?
A Claude Code 会智能选择关键文件读取,不会全量加载。你也可以在 CLAUDE.md 中明确工作范围,减少上下文消耗。
Q CLAUDE.md 必须放在根目录吗?
A 根目录的 CLAUDE.md 是全局配置。子目录也可以放 CLAUDE.md,Claude Code 会合并读取。
Q 需要把 CLAUDE.md 提交到 git 吗?
A 建议提交。团队共享项目约定比个人配置更有价值。敏感信息(API Key 等)不要写在 CLAUDE.md 中。
Q /init 生成的 CLAUDE.md 不准确怎么办?
A 手动修改。/init 只是辅助生成,最终 CLAUDE.md 的准确性需要人工审查和调整。
Q Monorepo 中每个包都需要 CLAUDE.md 吗?
A 不一定。如果包之间差异不大,一个根 CLAUDE.md 就够了。差异大时建议每个包单独配置。

📖 小节


📝 作业

  1. 基础题(难度⭐):在一个现有项目中运行 claude /init,检查生成的 CLAUDE.md 是否准确。
  2. 进阶题(难度⭐⭐):手动编写一个完整的 CLAUDE.md,包含项目约定、常用命令和约束条件。
  3. 挑战题(难度⭐⭐⭐):为一个 Monorepo 项目设计多层 CLAUDE.md 配置方案,确保各子项目独立运作。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏