UNPKG

@tianyio/quality-helper

Version:

A comprehensive quality helper tool for project scaffolding and management

156 lines (112 loc) 4.16 kB
# 代码提交自动化检查机制说明 ## 1. 机制概述 项目在代码提交时会自动执行以下检查: 1. **代码格式化和质量检查** - 使用 Prettier 和 ESLint 2. **TypeScript 类型检查** - 使用 TypeScript 编译器 3. **代码复杂度检测** - 集成在 ESLint 配置中的复杂度规则 ## 2. 配置详情 ### 2.1 Git Hooks 配置 项目使用 Husky 管理 Git Hooks,在 `.husky/pre-commit` 文件中配置了 pre-commit 钩子: ```bash #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" lint-staged ``` ### 2.2 Lint-Staged 配置`.lintstagedrc` 文件中配置了针对不同文件类型的检查任务: ```json { "*.{js,jsx,ts,tsx,vue,cjs,mjs,cts,mts}": ["eslint --fix", "vue-tsc --noEmit"], "*.{css,scss,less,sass,styl}": ["prettier --write"], "*.{html,json,jsonc,md,yml,yaml,toml}": ["prettier --write"] } ``` ### 2.3 Commit Message 验证`.husky/commit-msg` 文件中配置了 commit-msg 钩子: ```bash #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" commitlint --edit "$1" ``` 使用 Commitlint 验证提交信息格式,配置文件为 `commitlint.config.cjs`## 3. 工作流程 ### 3.1 代码提交流程 当执行 `git commit` 命令时,会按以下顺序执行检查: 1. **Pre-commit 钩子触发** - 运行 Lint-Staged 检查暂存区文件 - Prettier 格式化代码 - ESLint 修复代码问题 2. **Commit-msg 钩子触发** - 验证提交信息格式是否符合规范 ### 3.2 检查失败处理 当任何检查失败时,Git 提交会被阻止,开发者需要修复问题后重新提交。 ## 4. 配置文件说明 ### 4.1 .lintstagedrc 定义了不同文件类型的检查任务: - **JavaScript/TypeScript/Vue 文件**:ESLint 修复、Prettier 格式化 - **样式文件**:Prettier 格式化 - **其他文本文件**:Prettier 格式化 ### 4.2 ESLint 代码质量规则 代码质量检测规则配置在 eslint.config.js 文件中,包括: ```javascript { rules: { // 代码质量规则 'no-console': 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'warn', 'no-unused-vars': 'off', // 由 TypeScript 处理 'no-undef': 'off', // 由 TypeScript 处理 'no-duplicate-imports': 'error', 'prefer-const': 'error', 'prefer-template': 'error', // 代码复杂度规则 'max-depth': ['warn', 4], // 最大嵌套深度 'max-lines': ['warn', 300], // 文件最大行数 'max-lines-per-function': ['warn', 50], // 函数最大行数 'max-nested-callbacks': ['warn', 3], // 最大嵌套回调 'max-params': ['warn', 4], // 函数最大参数 'max-statements': ['warn', 10], // 函数最大语句数 } } ``` ### 4.3 Commitlint 配置 提交信息验证规则配置在 commitlint.config.cjs 文件中,支持以下提交类型: - `update` - 新功能 - `defect` - 修复bug - `docs` - 文档更新 - `style` - 代码格式化 - `refactor` - 重构 - `perf` - 性能优化 - `test` - 测试相关 - `build` - 构建相关 - `ci` - CI/CD相关 - `chore` - 其他杂项 - `revert` - 回滚 - `wip` - 进行中的工作 - `release` - 发布版本 - `hotfix` - 热修复 - `security` - 安全修复 ## 5. 使用说明 ### 5.1 正常开发流程 1. 编写代码并添加到 Git 暂存区:`git add .` 2. 提交代码:`git commit -m "update: 添加新功能"` 3. 系统自动执行所有检查任务 ### 5.2 手动运行检查 ```bash # 运行所有检查 npx lint-staged # 验证提交信息格式 npx commitlint --from HEAD~1 --to HEAD --verbose ``` ### 5.3 跳过检查(不推荐) 在特殊情况下,可以使用 `--no-verify` 参数跳过检查: ```bash git commit -m "update: 添加新功能" --no-verify ``` ## 6. 最佳实践 1. **遵循提交规范**:使用标准的提交类型和格式 2. **保持代码简洁**:遵循代码复杂度规则 3. **及时修复问题**:检查失败时及时修复 4. **定期更新依赖**:保持工具链版本更新 通过这套自动化检查机制,可以确保代码质量和项目稳定性,减少人工代码审查的工作量。