在项目中启用 commitlint
安装
和 eslint
一样的是, commitlint
自身只提供了检测的功能和一些最基础的规则,使用者需要根据这些规则配置出自己的规范。
对于 Conventional Commits
规范,社区已经整理好了 @commitlint/config-conventional
包,我们只需要安装并启用它就可以了。
首先安装 commitlint 以及 conventional 规范:
npm install --save-dev @commitlint/cli @commitlint/config-conventional
配置
接着创建 commitlint.config.js
或者 .commitlintrc.js
文件,并写入以下内容:
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'body-leading-blank': [1, 'always'],
'body-max-line-length': [2, 'always', 100],
'footer-leading-blank': [1, 'always'],
'footer-max-line-length': [2, 'always', 100],
'header-max-length': [2, 'always', 100],
'scope-case': [2, 'always', 'lower-case'],
'subject-case': [2, 'never', ['sentence-case', 'start-case', 'pascal-case', 'upper-case']],
'subject-empty': [2, 'never'],
'subject-full-stop': [2, 'never', '.'],
'type-case': [2, 'always', 'lower-case'],
'type-empty': [2, 'never'],
'type-enum': [
2,
'always',
['build', 'chore', 'ci', 'docs', 'feat', 'fix', 'perf', 'refactor', 'revert', 'style', 'test'],
],
},
}
注意:rule 由 name 和配置数组组成,如:name: [0, 'always', 72]
,数组中第一位为 level
,可选0, 1, 2
, 0
为 disable
, 1
为 warning
, 2
为 error
,第二位为应用与否,可选 always|never
,第三位该 rule
的值。
至此,commitlint
的配置就基本完成了,但目前我们还没有说何时来执行 commitlint
。
答案显而易见,在每次执行 git commit
的时候咯~
为了可以在每次 commit 时执行 commitlint 检查我们输入的 message,我们还需要用到一个工具 —— husky
。
husky
是一个增强的 git hook
工具。可以在 git hook
的各个阶段执行我们在 package.json
中配置好的 npm script
。
首先安装 husky
:
npm install --save-dev husky
接着在 package.json
中配置 commit-msg
脚本:
{
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
"pre-commit": "lint-staged"
}
}
}