因为团队需要,最近在研究git commit message规范相关的东西。规范基本都是用的Angular规范这一套,比较明确。为了更有效地执行这些规范,也在找配套的工具。Commitizen就是配套的工具之一。它可以帮助我们更有效、更方便地写出规范的commit message。
使用Commitizen效果
通过这个gif中完成一次提交的过程,我们可以感受到Commitizen的便捷。完成一次提交只需要几次和命令行的交互。下面讲如何安装、使用它。安装方式有两种:单个项目安装和全局安装。
单个项目安装Commitizen
首先通过npm install --save-dev commitizen
来安装Commitizen。
下一步是初始化Commitizen配套的适配器,如果你的npm版本在5.2以上,那么你可以使用npx来初始化:
npx commitizen init cz-conventional-changelog --save-dev --save-exact
对于5.2之前版本的npm,可以通过以下命令来初始化:
./node_modules/.bin/commitizen init cz-conventional-changelog --save-dev --save-exact
或者:
./node_modules/.bin/cz init cz-conventional-changelog --save-dev --save-exact
完成这两步后,在项目下运行git cz
就可以出现开头的效果。至此,单个项目下安装Commitizen基本已经完成了。下面是一些让你的Commitizen更强大的配置:
在package.json添加npm script
{
...
"script": {
"cm: "cz"
}
}
这样,对于项目的其他开发者来说,如果他们想通过Commitizen完成一次提交,只需要运行npm run cm
就可以了。
在git commit
上运行Commitizen
这里,我们将展示如何使用git hooks和--hook命令行参数将Commitizen合并到现有的git commit工作流中。
注意:这里我们假设你的项目已经完成了“单个项目安装”中基本的两步。
Husky
对于husky
用户,在package.json
中添加下列配置:
"husky": {
"hooks": {
"prepare-commit-msg": "exec < /dev/tty && npx cz --hook || true"
}
}
全局安装Commitizen
首先,全局安装Commitizen:
npm install -g commitizen
然后,全局安装你喜欢的适配器,比如cz-conventional-changelog
:
npm install -g cz-conventional-changelog
如果你是mac
用户,运行下面这条命令,它会在你的home
目录下,创建一个.czrc
文件。路径指向刚才全局安装的适配器。
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
如果你是windows
用户,请把下面这条命令中的C:\Users\12105
更换成你自己电脑上的\Users\username
目录再运行。这条命令的本质其实就是在Users\username
目录下创建一个内容为{ "path": "cz-conventional-changelog" }
的.czrc
文件。
echo { "path": "cz-conventional-changelog" } > C:\Users\12105\.czrc
至此,你已经完成了Commitizen的全局安装!你可以在任何一个git仓库中使用git cz
,而不是git commit
。
另外,你可以在git cz
上使用git commit
的所有参数,比如git cz -a
。
如果项目和全局都安装过Commitizen,那么会使用项目中的Commitizen适配器,而不是全局的。
本篇内容主要是对Commitizen\README.md的翻译和整理。原文请见:commitizen\cz-cli。
如果本篇内容对你有帮助,麻烦点个赞~