Skip to content

Git Commit Lint

1. 安装依赖

bash
pnpm add -D @commitlint/cli @commitlint/config-conventional husky

2. 配置 package.json

package.json 中补充:

json
{
  "scripts": {
    "prepare": "husky"
  }
}

prepare 用来安装 Husky。

3. 新建 commitlint.config.js

js
export default {
  extends: ['@commitlint/config-conventional'],
  rules: {
    'type-enum': [
      2,
      'always',
      ['build', 'chore', 'ci', 'docs', 'feat', 'fix', 'perf', 'refactor', 'revert', 'style', 'test'],
    ],
    'type-case': [2, 'always', 'lower-case'],
    'type-empty': [2, 'never'],
    'subject-empty': [2, 'never'],
    'subject-full-stop': [2, 'never', '.'],
    'header-max-length': [2, 'always', 100],
  },
}
提交类型说明
  • build:构建配置、依赖、打包流程
  • chore:杂项维护
  • ci:CI 配置
  • docs:文档变更
  • feat:新增功能
  • fix:修复问题
  • perf:性能优化
  • refactor:重构
  • revert:回滚提交
  • style:格式调整,不改逻辑
  • test:测试相关

4. commit-msg:校验提交信息

新建 .husky/commit-msg 文件,内容如下:

bash
pnpm exec commitlint --edit "$1"

5. 给文件执行权限

bash
chmod +x .husky/commit-msg

6. 验证

bash
# 合法提交
git commit -m "feat: init project"

# 不合法提交
git commit -m "update code"

后续:接入 lint-staged

1. 安装

bash
pnpm add -D lint-staged

2. 配置 .lintstagedrc

以自动格式化为例

json
{
  "*": "prettier --write --ignore-unknown"
}

3. .husky/pre-commit:在提交前处理暂存文件

新建 .husky/pre-commit 文件,内容如下:

bash
pnpm exec lint-staged

基于 MIT 许可发布