Skip to content

代码提交规范

要让 npm 项目提交的代码符合 Git Commits 规范(如 Conventional Commits),需通过工具链约束提交格式、自动校验及生成日志。以下是详细实施步骤:

以下是将提供的操作整理成的Markdown表格:

类型含义示例描述
feat新增功能(feature)feat: add night mode to the application描述新功能的添加,如新增用户界面特性或后端服务功能
fix修复错误(bug fix)fix: resolve null pointer exception in user login修复代码中的错误或问题,确保程序行为符合预期
style代码样式修改(不影响逻辑)style: update code formatting according to ESLint rules改进代码风格(如缩进、空格、换行),不改变功能
revert回滚之前的提交revert: 回滚feat: 增加用户注册功能直接明确回滚历史代码或功能模块
build构建系统/外部依赖变更build: 升级webpack到版本5影响构建系统的更改(如打包配置、依赖升级)
refactor代码重构(不改变功能)refactor: simplify complex function logic优化代码结构而不改变外部行为
docs文档更新docs: update installation guide for v2.0更新README、API文档等说明性内容
test测试相关更改test: add unit tests for new feature添加或修改测试用例
chore维护任务chore: update package.json dependencies日常维护(如更新依赖项、配置文件)
perf性能优化perf: optimize database query performance针对性能提升的代码优化
ci持续集成配置变更ci: configure GitHub Actions for automated testing更新CI/CD流水线配置(如GitHub Actions/Jenkins)

说明:

  1. 前缀规范:所有类型均使用英文小写前缀(如feat/fix
  2. 语义化提交:示例遵循<类型>: <描述>的格式(如feat: add night mode
  3. 作用范围
    • style仅涉及代码风格(如格式化规则)
    • revert需明确标注被回滚的提交
    • buildci区分:前者影响项目构建,后者涉及自动化流程配置

一、安装 Commitizen 工具(规范提交信息)

作用:交互式生成符合规范的提交信息,替代 git commit
步骤

bash
# 全局安装(推荐)
npm install -g commitizen cz-conventional-changelog

# 配置适配器
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
  • 使用方式
    提交时运行 git cznpm run commit(若项目局部安装),按提示填写:
    1. type:选择提交类型(如 feat、fix、docs)。
    2. scope:输入影响范围(如模块名)。
    3. subject:简短描述(必填)。
    4. body/footer:详细说明或关联 issue(可选)。

二、定制中文提交提示(可选)

替换默认英文提示为中文:

bash
npm install --save-dev cz-customizable

创建 .cz-config.js 文件:

javascript
module.exports = {
  types: [
    { value: "feat", name: "feat:     新功能" },
    { value: "fix", name: "fix:      修复Bug" },
    // 其他类型(docs/style/refactor等)
  ],
  messages: {
    type: "选择提交类型:",
    scope: "影响范围(如模块名):",
    subject: "简短描述(必填):",
    // ...其他配置
  }
};

package.json 中指定适配器:

json
{
  "config": {
    "commitizen": {
      "path": "node_modules/cz-customizable"
    }
  }
}

三、配置 Commitlint + Husky(强制校验)

作用:通过 Git 钩子拦截不符合规范的提交。
步骤

  1. 安装依赖

    bash
    npm install --save-dev @commitlint/cli @commitlint/config-conventional husky
  2. 创建校验规则
    commitlint.config.js 中:

    javascript
    module.exports = { extends: ["@commitlint/config-conventional"] };
  3. 启用 Husky 钩子
    package.json 中添加:

    json
    {
      "husky": {
        "hooks": {
          "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
        }
      }
    }
    • 提交时自动校验,格式错误则拒绝提交(示例错误:git commit -m "update code" 会报错)。

四、集成代码风格检查(增强规范)

在提交前自动检查代码风格(如 ESLint/Standard):

  1. 安装 ESLint

    bash
    npm install --save-dev eslint
    npx eslint --init  # 生成配置文件
  2. 配置 Husky 的 pre-commit 钩子
    package.json 中:

    json
    {
      "husky": {
        "hooks": {
          "pre-commit": "eslint src/**/*.js",  // 检查指定目录
          "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
        }
      }
    }
    • 代码不符合规范时,提交将被终止。

五、规范提交流程示例

  1. 添加文件到暂存区:

    bash
    git add .
  2. 触发交互式提交:

    bash
    git cz  # 或 npm run commit
    • 按提示填写类型、范围、描述等。
  3. 自动触发流程:

    • Husky 执行 pre-commit(代码检查)。
    • Husky 执行 commit-msg(信息格式校验)。
    • 全部通过后提交成功。

六、自动生成变更日志(Changelog)

利用规范提交自动生成日志:

bash
npm install -g conventional-changelog-cli
conventional-changelog -p angular -i CHANGELOG.md -s
  • 每次发布新版本时运行,自动提取 feat/fix 等类型提交到日志。

七、NPM 版本管理规范

结合语义化版本(SemVer):

bash
npm version patch  # 修复Bug(0.0.1 → 0.0.2)
npm version minor  # 新增功能(0.0.2 → 0.1.0)
npm version major  # 破坏性变更(0.1.0 → 1.0.0)
  • 自动创建 Git Tag(如 v1.0.0)。

总结:完整工具链

工具作用关键配置
Commitizen交互式生成规范提交信息.cz-config.js(中文支持)
Commitlint校验提交信息格式commitlint.config.js
HuskyGit 钩子管理pre-commit/commit-msg
ESLint代码风格检查.eslintrc.js
conventional-changelog自动生成变更日志版本发布时执行

通过以上步骤,团队可确保所有提交符合 类型化+作用域+描述 的规范(如 fix(login): 修复密码验证逻辑),提升代码可维护性和自动化效率。