---
title: "1.7 创建项目"
description: "从文件夹命名规范到项目模板创建"
chapter: "第一章"
---

# 1.7 创建项目

> **阅读完本节后，你将会收获：**
>
> - 掌握文件夹命名规范，避免中文路径导致的开发问题
> - 学会使用官方脚手架快速创建标准项目结构
> - 理解 Next.js 项目的目录结构

新手最容易犯的错误是：拿到 AI 生成的代码，逐个文件手动创建。正确的做法是使用项目模板，让 AI 通过脚手架命令帮你创建标准项目。

## 准备工作

### 创建项目文件夹

在创建项目前，先在文件管理器中创建一个**英文路径**的文件夹。

**重要**：完整路径中每一级都不能有中文或空格。

| 错误示例 | 原因 |
|----------|------|
| `C:/Users/张三/projects` | 用户名是中文 |
| `C:/Users/李/my project` | 文件夹名有空格 |

| 正确示例 | 说明 |
|----------|------|
| `C:/Users/YourName/projects` | 全英文，无空格 |
| `/Users/yourname/projects` | macOS 用户目录 |

**建议的文件夹结构**：

```
my-projects/          ← 总文件夹
├── my-first-app/     ← 项目1
├── blog-app/         ← 项目2
└── store-app/        ← 项目3
```

### 在文件夹中打开终端

创建好文件夹后，需要在其中打开终端来执行命令。

| 系统 | 操作 |
|------|------|
| **Windows** | 文件夹空白处右键 → "在终端中打开" |
| **Windows 旧版** | 按住 `Shift + 右键` → "在此处打开 PowerShell 窗口" |
| **Mac** | Finder → 服务 → 新建位于文件夹位置的终端窗口 |
| **IDE** | Cursor/VS Code/Trae：文件 → 打开文件夹，内置终端自动定位 |

### 什么是文件路径

文件路径是文件在文件系统中的位置。告诉 AI "修改 src/app/page.tsx" 时，AI 需要通过路径找到这个文件。

**绝对路径**：从根目录开始的完整路径

```
Windows:  C:\Users\YourName\projects\my-app\package.json
macOS:    /Users/yourname/projects/my-app/package.json
```

**相对路径**：从当前目录开始的路径

```
./package.json        # 当前目录下的 package.json
../other-project      # 上一级目录的 other-project
src/app/page.tsx      # 当前目录下 src/app/page.tsx
```

## 命名规范

开发工具对中文路径支持不佳，容易导致各种离奇报错。

| 正确示例 | 错误示例 |
|----------|----------|
| `my-project` | `我的项目`、`my project` |
| `user-profile` | `user profile`、`用户资料` |
| `app.tsx` | `应用.tsx`、`app 文件.tsx` |

**规则**：

- ✅ 使用小写英文字母
- ✅ 使用连字符 `-` 分隔单词
- ❌ 避免中文字符、空格、特殊字符

::: tip 为什么不能用中文？

**常见报错**：`ENOENT: no such file or directory`、`MODULE_NOT_FOUND`

中文路径可能导致编码问题、路径解析错误、工具兼容性问题。

:::

## 创建项目

现代框架都提供了官方脚手架，一条命令即可创建标准项目。

```bash
# 创建 Next.js 项目（my-app 是项目名，可以改）
pnpm create next-app@latest my-app

# 创建 Vite + React 项目
pnpm create vite@latest my-app -- --template react
```

创建时会询问配置选项：

- **TypeScript**：推荐选择 Yes
- **ESLint**：推荐选择 Yes
- **Tailwind CSS**：根据需要选择
- **src directory**：推荐选择 Yes（代码放 src/ 目录，结构更清晰）
- **App Router**：推荐选择 Yes

::: tip 不想记命令？

如果记不住命令，可以直接复制本教程中的示例命令。但命令很简单，建议记住：

```bash
pnpm create next-app@latest my-app
```

:::

::: details 🎮 点击体验：脚手架模拟器
<ProjectScaffoldFlow />

> 💡 **练习**：点击"开始创建项目"，逐步选择配置选项，观察项目文件结构的生成过程
>
> 🎯 **核心概念**：脚手架一条命令搞定项目创建，不要手动逐个创建文件
:::

## Next.js 项目结构

创建完成后，你会看到这样的结构：

```
my-next-app/
├── src/
│   ├── app/                 # 页面和 API
│   │   ├── page.tsx         # 首页
│   │   ├── layout.tsx       # 全局布局
│   │   └── api/             # API 接口
│   │
│   ├── components/          # UI 组件
│   └── lib/                 # 工具函数
│
├── public/                  # 静态资源（图片、字体）
├── package.json             # 依赖管理
└── tsconfig.json            # TypeScript 配置
```

**简单理解**：

- `src/app/` - 放页面文件和接口
- `src/components/` - 放可复用的 UI 组件
- `src/lib/` - 放工具函数
- `public/` - 放图片等静态资源

::: tip 代码放哪里？

当 AI 说"创建用户列表页面"时，在 `src/app/` 下创建 `users/page.tsx`。

当 AI 说"创建一个按钮组件"时，在 `src/components/` 下创建 `Button.tsx`。

:::

## 更便捷的方式：使用 /project-init

::: tip 即将推出

本教程提供 `/project-init` skill，可以自动化整个项目初始化流程。

**它能做什么**：

1. **环境检查**：自动检查 Node.js 版本、pnpm 是否安装
2. **智能推荐模板**：根据你的需求（PRD、设计稿、功能想法）推荐合适的技术栈
3. **预设模板**：
   - 推荐配置（纯前端）
   - SaaS 全栈（含数据库、认证、支付）
   - 营销网站/Landing Page
   - 管理后台/Dashboard
   - 轻量 SPA
4. **兼容性检查**：自动处理 React 版本、Tailwind v4、组件库冲突等问题
5. **自动化安装**：非交互式命令，一键创建项目

**使用示例**：

> 使用 /project-init 创建一个需要用户登录和数据库的 SaaS 项目

它会引导你完成环境检查、需求分析、模板选择、依赖安装、环境变量配置等全部流程。

教程正式发布后，会提供安装方法。想了解更多 Skills 内容，详见 [2.3 Skills 系统](../02-ai-tuning-guide/03-mcp-and-skills.md)。

:::

## 启动项目

```bash
# 进入项目目录（my-app 改为你创建的项目名）
cd my-app

# 启动开发服务器
pnpm dev
```

打开浏览器访问 `http://localhost:3000`，看到欢迎页面即创建成功。

## 常见问题

### Q: 我应该用哪个模板？

| 项目类型 | 推荐模板 |
|----------|----------|
| 全栈应用 | Next.js |
| 前端 SPA | Vite + React |
| 静态站点 | Astro |

本教程使用 **Next.js + TypeScript + Tailwind CSS**，这是适合 AI 辅助开发的全栈方案。

### Q: 已经用了中文路径怎么办？

在文件资源管理器中操作：

1. 删除 `node_modules` 文件夹
2. 创建新的英文文件夹
3. 把剩余文件复制到新文件夹
4. 在新文件夹中运行 `pnpm install`

### Q: 可以让 AI 逐个创建文件吗？

不推荐。让 AI 逐个创建文件容易遗漏、耗时、可能配置错误。**正确做法**：先用脚手架创建标准项目，再让 AI 在现有结构上修改。

## 核心理念

**使用模板，而不是从零开始**。

| 方式 | 结果 |
|------|------|
| 脚手架创建 | 标准结构、预配置、一键启动 |
| 手动创建 | 容易漏文件、配置错误、浪费时间 |

::: tip 项目命名建议
项目名建议使用小写字母和连字符，避免中文和空格（如 `my-todo-app`）。这样可以避免某些工具的兼容性问题。
:::

**项目创建后的验证**：

- [ ] 理解各文件夹的用途（`src/`、`public/`、`app/` 等）
- [ ] 项目能正常启动（`pnpm dev` 成功，浏览器能访问 `http://localhost:3000`）

## 相关内容

- 详见：[1.5 包管理与项目配置](./05-package-manager-and-config.md)
- 详见：[1.8 Localhost 与端口](./08-localhost-and-ports.md)
- 后续：[第2章 AI调教指南](../02-ai-tuning-guide/)
