原文链接点这里⭐️
这篇文章讲解怎样用commitlint和husky去限制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