前端代码风格⾃动化系列(⼆)之Commitlint
在有了Husky赋能之后,我们有能⼒在Git的钩⼦⾥做⼀些事情,⾸先不得不提的是代码的提交规范和规范的校验,优雅的提交,⽅便团队协作和快速定位问题。⾸推,另外@加神 推荐了也是⼀个很有意思的⼯具。
王若琳好听的英文歌安装
npm install --save-dev @commitlint/config-conventional @commitlint/cli
grapefruit
antenna是什么意思// ⽣成配置⽂件fig.js,当然也可以是 .commitlintrc.js
echo "ports = {extends: ['@commitlint/config-conventional']};" > fig.js
配置
在husky的配置加⼊CommitlIint配置,v1.0.1版本以后为HUSKY_GIT_PARAMS,v0.14.3为GIT_PARAMS
"husky": {
"hooks": {
"pre-commit": "npm run test",
"commit-msg": "commitlint -e $HUSKY_GIT_PARAMS"
}
},
四级英语文章定制提交规范
提交格式(注意冒号后⾯有空格)
corresponding
<type>: <subject>
常⽤的type类别
upd:更新某功能(不是 feat, 不是 fix)
feat:新功能(feature)
fix:修补bug
docs:⽂档(documentation)
peroxidestyle: 格式(不影响代码运⾏的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助⼯具的变动
例⼦:
medinagit commit -m 'feat: 增加 xxx 功能'
git commit -m 'bug: 修复 xxx 功能'
subject
subject是 commit ⽬的的简短描述,可以做⼀些配置,如最⼤长度限制。
::rule由name和配置数组组成,如:'name:[0, 'always', 72]',数组中第⼀位为level,可选0,1,2,0为disable,1为warning,2为error,第⼆位为应⽤与否,可选always|never,第三位该rule的值。具体配置例⼦如下:
extends: [
"@commitlint/config-conventional"
],
rules: {collapd
'type-enum': [2, 'always', [
'upd', 'feat', 'fix', 'refactor', 'docs', 'chore', 'style', 'revert'
]],
'type-ca': [0],
'type-empty': [0],twinkle什么意思
'scope-empty': [0],
'scope-ca': [0],
'subject-full-stop': [0, 'never'],
'subject-ca': [0, 'never'],
'header-max-length': [0, 'always', 72]
}
};
这⾥列出了⼤部分常⽤的配置,其它的可以参考Commitlint⽹站,具体使⽤例⼦:
substantially
这⾥我们使⽤错误的提交⽅式,最上⾯的是⾃动测试的脚本,⼤家可以忽略,husky给出了commit-msg的input为xxx,触发了subject-empty,type-empty两个规则,提交不符合规范,被拦了下来。如果是正确的提交,例⼦如下:
关于Commitlint的使⽤就到这⾥了。