一、项目初始化与基础配置
1.1 创建标准化项目结构
使用官方脚手架工具快速生成项目基础框架,推荐使用最新版本确保功能完整性:
npx create-next-app@latest
在交互式配置过程中,建议采用以下配置方案:
- 项目命名:遵循kebab-case命名规范(如
my-next-project) - 技术选型:
- TypeScript:推荐启用以获得类型安全
- ESLint:必须启用代码质量检查
- Tailwind CSS:根据团队CSS方案选择
- App Router:新项目推荐使用(v13+默认选项)
- 目录结构:启用
src/目录组织代码 - 路径别名:配置
@/*别名简化模块导入
1.2 项目目录规范
生成的标准化目录应包含以下核心结构:
├── src/│ ├── app/ # App Router路由配置│ ├── components/ # 共享组件│ ├── hooks/ # 自定义Hooks│ ├── lib/ # 工具函数│ ├── styles/ # 全局样式│ └── types/ # TypeScript类型定义├── public/ # 静态资源├── .husky/ # Git钩子配置├── .vscode/ # 编辑器配置└── configs/ # 构建配置(可选)
二、代码质量保障体系
2.1 ESLint集成方案
-
基础配置:继承Next.js官方推荐规则
// .eslintrc.json{"extends": ["next/core-web-vitals", "prettier"],"rules": {"@next/next/no-html-link-for-pages": "off"}}
-
规则扩展建议:
- 启用
eslint-plugin-unused-imports自动检测未使用导入 - 添加
eslint-plugin-import规范模块导入顺序 - 团队可定制
no-restricted-imports限制特定模块使用
2.2 Prettier代码格式化
-
安装核心依赖:
npm install --save-dev prettier eslint-config-prettier
-
配置文件示例:
// .prettierrc.jsmodule.exports = {semi: false,singleQuote: true,trailingComma: 'es5',printWidth: 100,endOfLine: 'auto'}
-
VS Code集成:
在settings.json中添加:{"editor.defaultFormatter": "esbenp.prettier-vscode","editor.formatOnSave": true,"editor.codeActionsOnSave": {"source.fixAll.eslint": true}}
2.3 自动化格式化脚本
在package.json中添加标准化脚本:
{"scripts": {"lint": "next lint","format": "prettier --write \"src/**/*.{ts,tsx}\"","type-check": "tsc --noEmit"}}
三、Git工作流规范
3.1 Husky钩子配置
-
初始化Git钩子:
npx husky-init && npm install
-
关键钩子实现:
- pre-commit:执行ESLint检查和格式化
```bash
!/bin/sh
. “$(dirname “$0”)/_/husky.sh”
npm run lint
npm run format
git add .
- **commit-msg**:集成Commitlint检查(后续章节详述)## 3.2 Commitlint提交规范1. **安装依赖**:```bashnpm install --save-dev @commitlint/config-conventional @commitlint/cli
-
基础配置:
// commitlint.config.jsmodule.exports = {extends: ['@commitlint/config-conventional'],rules: {'type-enum': [2,'always',['feat', 'fix', 'docs', 'style', 'refactor', 'test', 'chore', 'revert']]}}
-
钩子集成:
在.husky/commit-msg中添加:
```bash!/bin/sh
. “$(dirname “$0”)/_/husky.sh”
npx —no-install commitlint —edit “$1”
## 3.3 提交规范实践推荐使用以下提交消息格式:
():