怎么去限制Git commit messages(译)

801 阅读1分钟

原文链接点这里⭐️

这篇文章讲解怎样用commitlinthusky去限制Git commit messages格式。

前置条件

  • Node.js

Husky

安装commitlint

npm install @commitlint/{cli,config-conventional} --save-dev

这条命令同时安装@commitlint/cli@commitlint/config-conventional

config-conventional是基于Angular规范的标准。 新建.commitlintrc.json,扩展config-conventional规则:

{
    "extends": ["@commitlint/config-conventional"]
}

或者在commitlint.config.js文件中导出相关规则:

module.exports = {
    extends: ['@commitlint/config-conventional']
}

安装husky

npm install husky

使Git hooks可用:

npx husky install

或者往package.json文件中添加postinstallscript,使其在npm install之后运行从而使Git hooks可用:

{
    "private": true,
    "scripts": {
        "postinstall": "husky install"
    },
    "devDependencies": {
        "@commitlint/cli": "^11.0.0",
        "@commitlint/config-conventional": "^11.0.0",
        "husky": "^5.0.9"
    }
}

默认这件文件是私有的。如果这个文件夹是公共的,使用pinst来确保postinstall是不可变得。详细内容查看Husky docs

添加commit-msghook:

npx husky add .husky/commit-msg 'npx commitlint --edit $1'

确保使用单引号取代双引号

Husky 4

安装commitlint:

npm install @commitlint/{cli,config-conventional} --save-dev

新建.commitlintrc.json

{
    "extends": ["@commitlint/config-conventional"]
}

或者新建commitling.config.js

module.exports = {
  extends: ['@commitlint/config-conventional'],
};

安装husky@4,这里面有配置Git hooks

npm install husky@4

新建.huskyrc(或者.huskyrc.json),并且添加commit-msghook来运行commitlint

{
    "hooks": {
        "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
}

或者在pakcage.json中添加hook:

{
  "devDependencies": {
    "@commitlint/cli": "latest",
    "@commitlint/config-conventional": "latest",
    "husky": "4"
  },
  "husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  }
}

Test

提交并且通过Conventional Commits检查commit messages:

git commit -m 'add commitlint' # fail
git commit -m 'feat: add commitlint' # success