Git Commit 规范落地指南:Angular 提交风格 + Husky 钩子强制校验

一、Angular 提交风格规范

Angular 风格要求提交信息包含**类型(type)、作用域(scope)、主题(subject)**三部分,格式如下:

<type>(<scope>): <subject>

其中:

  • 类型(type):必填,表示提交性质,常用值:
    • feat:新功能
    • fix:修复问题
    • docs:文档变更
    • style:代码格式调整
    • refactor:重构代码
    • test:测试相关
    • chore:构建/依赖变更
  • 作用域(scope):可选,说明影响范围(如模块名)
  • 主题(subject):必填,简洁描述变更,不超过 50 字符

示例

feat(user): 新增邮箱验证功能
fix(auth): 修复登录令牌过期问题


二、Husky 钩子强制校验

通过 Husky 在 commit-msg 钩子触发校验,确保提交符合规范:

步骤 1:安装依赖
npm install husky @commitlint/cli @commitlint/config-conventional --save-dev

步骤 2:初始化 Husky
npx husky install
npx husky add .husky/commit-msg 'npx commitlint --edit $1'

步骤 3:创建配置文件

新建 .commitlintrc.js

module.exports = {
  extends: ['@commitlint/config-conventional'],
  rules: {
    'type-enum': [2, 'always', [
      'feat', 'fix', 'docs', 'style', 'refactor', 'test', 'chore'
    ]],
    'subject-max-length': [2, 'always', 50]
  }
};

步骤 4:验证配置

尝试提交非法信息将触发拦截:

git commit -m "add new feature"  # 被拦截:缺少类型前缀
git commit -m "feat: 添加用户管理系统"  # 通过校验


三、工作流示例
graph LR
A[git commit] --> B{Husky 钩子}
B -->|校验通过| C[提交成功]
B -->|校验失败| D[拒绝提交]


四、高级配置建议
  1. 自定义规则:在 .commitlintrc.js 中扩展规则:
    rules: {
      'scope-case': [2, 'always', 'lower-case'], // 作用域强制小写
      'body-max-line-length': [2, 'always', 100] // 正文每行限长
    }
    

  2. 自动生成 CHANGELOG:配合 standard-version 工具:
    npx standard-version --release-as minor
    

注意事项

  • 首次安装后执行 npm set-script prepare "husky install" 确保协作同步
  • 团队需统一约定 scope 命名规范(如模块名)
  • 可通过 git commit --no-verify 临时绕过校验(慎用)

通过此方案,可确保团队提交信息清晰可追溯,提升代码维护效率。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐