工程化配置 git commit 规范
如果你团队的 git commit
信息紊乱,太过糟糕,觉得有必要统一规范 commit
格式,又或者你是一个强迫症患者,有必要让 commit
信息整整齐齐的展示。那么,你可以往下瞅瞅。
本文使用的插件版本
pkg
1
2
3
4
5
6 {
"@commitlint/cli": "^12.0.1",
"@commitlint/config-conventional": "^12.0.1",
"husky": "4.3.8",
"standard-version": "^9.1.1"
}
git commit 规范格式
现在比较大众化的 commit 格式无非有两种:
1 | $ <commit-type>[(commit-scope)]: <commit-message> |
<commit-type>
常见为:- chore:构建配置相关。
- docs:文档相关。
- feat:添加新功能。
- fix:修复 bug。
- perf:性能相关。
- refactor:代码重构,一般如果不是其他类型的 commit,都可以归为重构。
- revert:分支回溯。
- style:样式相关。
- test:测试相关。
[(commit-scope)]
可选,表示范围,例如:refactor(cli)
,表示关于 cli 部分的代码重构。<commit-message>
提交记录的信息,有些规范可能会要求首字母大写。<commit-icon>
用图标来替代<commit-type>
所表示的功能。
具体规范信息格式在这里查看(这里不做过多阐述)
用于 commit 规范的工具
本文主要讲述第二种(commitlint
)使用方法,如想使用更多请查看demo
commitlint 使用
1 | $ yarn add @commitlint/config-conventional @commitlint/cli --D |
在专门的 commitlint
配置文件 commitlint.config.js
中配置如下:
1 | module.exports = { |
类似于 eslint
,commitlint
还支持类似于 .commitlintrc.js
、.commitlintrc.json
、.commitlintrc.yml
名称的配置文件,又或者在 package.json
中添加 commitlint
字段。
然后安装 husky,这是为了添加 git hooks,使得 git commit
也能够符合 commit 规范。
1 | $ yarn add husky --dev |
在 package.json
中配置 husky
钩子:
(v1.0.1
版本以后为HUSKY_GIT_PARAMS
,v0.14.3
为GIT_PARAMS
)
1 | { |
上面的操作如果都成功的话,那么你使用 git commit
命令时,就必须老老实实的使用符合 commitlint
规范的信息了
standard-version 使用
1 | $ yarn add standard-version -D |
standard-version
是帮助项目自动生成ChangeLog
、升版本、打tag
的工具,它基于semver和Conventional Commits规范。(PS:配合git commit
规范化食用更加。
当执行server-version
命令后,它会自动完成以下操作:
- 取得当前版本(比如
package.json
里面的version
字段),升版本:1.0.0 => 1.1.0
或者1.0.0 => 2.0.0
等(如何升级可以由参数控制) - 基于
commits
生成ChangeLog
文件 - 提交一个
commit
,包含ChangeLog
和版本变更的文件 - 打
tag
以上功能都是可配置跳过的,对应:bump
、changelog
、commit
、tag
。比如在配置文件中按照如下配置,就可以跳过打tag
操作:
1 | { |
为standard-version
添加配置有两种方式:
目前使用的配置文件如下,其它配置参考官方文档:
1 | // https://github.com/conventional-changelog/conventional-changelog-config-spec/blob/master/versions/2.1.0/README.md |
package.json 配置:
1 | "scripts": { |
PS: standard-version
有很多其他的特性,这里不过多涉及, 有兴趣的可以自行尝试。也可以查看此demo
参考链接
工程化配置 git commit 规范