用到的包
yorkie , cz-conventional-changelog-lint,commitizen,conventional-changelog-cli
初始话一个空的项目
新建文件夹gitHooks, 在该目录下进行npm init
安装yorkie
npm install yorkie -D
安装commitizen
Commitizen是一个格式化commit message的工具。
npm install commitizen -D --registry=https://registry.npm.taobao.org
我们用的是Angular的commit message规范,那么就在我们项目的目录下输入以下命令:
commitizen init cz-conventional-changelog --save --save-exact
或
./node_modules/.bin/commitizen init cz-conventional-changelog --save-dev --save-exact
**注意:**因为commitizen工具是基于Node.js的,而我们项目工程目录下是没有package.json文件,所以会报错:
Error: ENOENT: no such file or directory, open '/Users/***/package.json
接下来我们就用初始话一个package.json的文件。如果不知道请看博客中 项目中利用npm生成package.json的那点事儿
然后,您可以在package.json中添加一些不错的npm运行脚本,指向本地版本的commitizen:
Error: ENOENT: no such file or directory, open '/Users/***/package.json
如果是第二次配置,需要用–force:
commitizen init cz-conventional-changelog --save --force
./node_modules/.bin/commitizen init cz-conventional-changelog --save --force
这样对项目来说更方便,因为如果参与项目的人想要提交,他们需要做的就是运行 npm run commit,他们将获得开始提交所需的提示!
npm run commit
注意: 如果您使用precommit钩子感谢类似的东西husky,则需要为脚本命名除“commit”之外的其他东西(例如“cm”:“git-cz”)。原因是因为npm-scripts有一个“功能”,它自动运行名称为prexxx的脚本,其中xxx是另一个脚本的名称。本质上,如果您将脚本命名为“commit”,则npm和husky将运行两次“precommit”脚本,并且解决方法是阻止npm触发的precommit脚本。
测试
npm run commit
我这里使用的yarn,你可以使用cnpm.根据个人喜好吧!
如何生成 CHANGELOG
安装conventional-changelog-cli
npm install conventional-changelog-cli -D --registry=https://registry.npm.taobao.org
在把 changelog 写入package.json里
输入yarn/cpm/npm run changelog
yarn run changelog
这样在每次发布之前修改下版本号,之后运行指令,然后提交到git,就能看到每次发布的周期啦
请看 Commit message 的格式说明
欢迎进入个人公众号 ,一起学习啊!
参考链接:
Commit message 和 Change log 编写指南
Git Commit Message Conventions
Angular的 Commit Message Guidelines
Angular的commit message
Git 写出好的 commit message