为什么要对 git 提交信息进行格式校验
-
通过对提交信息进行格式校验能统一规范,这在团队协作过程中显得格为重要。
-
符合规范的提交信息能很好反映此次提交的的目的,内容和作用。
-
在后期的问题定位过程中,能根据提交信息的类型(type)和 主题(subject)进行快速筛选。
-
每次发布新版本时,能根据提交信息自动生成
CHANGELOG
。
commitlint
commitlint
默认使用 Angular
规范进行格式校验,使用步骤如下:
- 使用 npm 安装 commitlint
# @commitlint/config-conventional(commitlint的提交规范), @commitlint/cli(脚手架命令)
npm uni @commitlint/config-conventional @commitlint/cli
npm install @commitlint/config-conventional @commitlint/cli -D
- 添加
commitlint.config.js
文件
echo module.exports = {extends: ['@commitlint/config-conventional']} > commitlint.config.js
- 测试 commitlint 命令
# 测试输入信息是否符合提交规范
echo foo | commitlint
echo foo: bar | commitlint
echo chore: bar | commitlint
husky
- 安装 husky(最新版的 husky 和老版本的配置方式不同)
npm uni husky && npm install husky -D
- 设置 husky 脚本并运行,运行成功后会在项目中生成
.husky
目录
npm pkg set scripts.prepare="husky install"
npm run prepare
- 添加 git 钩子,老版本的 husky 需要在
.huskyrc.js
文件中定义钩子,而新版本只需运行添加命令即可。添加成功后能在.husky
目录看到具体的命令内容。
# 注意在 windows 环境下这里一定要用双引号,如果使用单引号会添加失败的
husky add .husky/commit-msg "npx --no-install commitlint --edit $1"
commit-msg
钩子能在每次 git commit 时运行 commitlint 命令进行格式校验,不符合规范的提交将被拦截。