Why
在多人协作项目开发中, 提交信息都是各式各样乱糟糟的, 虽然 Git
已经强制信息不能为空, 但是却因此产生了许多比空更无聊的记录信息. 所以,需要有一套规则来限制一些这些无理的行为.
于是, Commitizen
就火了起来, 下面来学习一下.
安装
Commitizen
是基于 NodeJS
的一个工具集合, 所以必要条件是先安装 NodeJS
, 这点小事对于程序员来说不是问题, 就不详细展开了;
安装完 NodeJS
之后, 首先需要将目录变成一个 NodeJS
项目生成 package.json
, 以便保存项目配置使工具生效:
cd ${project_dir}
npm init --yes
--yes
表示忽略交互说明, 根据项目自动生成
然后, 就可以使用 npm
安装 Commitizen
了:
npm install -g --save-dev commitizen
-g
表示全局安装, 如果只需要安装到项目目录, 则可以去掉
--save-dev
表示标记上述工具为项目开发依赖
安装完 Commitizen
我们也需要初始化它的配置, 并为它指定一个提交日志适配器, 这里选用的是 cz-conventional-changelog
为 Commitizen
的适配器:
commitizen init cz-conventional-changelog --save-dev
另外还有一些其他的适配器, 比如
cz-customizable
可以让项目自定义模板
现在, 就可以使用 git cz
创建新的提交了!
扩展
光有了规范还不够, 有时候还得强制大家执行, 就需要对规则进行检测和拦截, 这里可以使用 husky
工具为本地仓库创建钩子, 把提交记录消息交给 commitlint
进行验证, 即可实现检测和拦截的功能.
安装钩子注册工具 husky
、 提交检查工具 @commitlint/cli
及 提交检查规则 @commitlint/config-angular
:
npm install --save-dev husky @commitlint/cli @commitlint/config-angular
然后创建 commitlint
的配置文件 .commitlintrc.js
:
module.exports = {extends: ['@commitlint/config-angular']}
最后再启用 husky
, 编辑 package.json
文件加入以下内容:
{
...,
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
}
现在, 胡乱写的提交记录将会被拦截!