designable工程使用cz-conventional-changelog模块和scripts/validate-commit-msg.js文件做了代码提交日志的规范。

cz-conventional-changelog

要使用cz-conventional-changelog,需使用npm install -g commitizen全局安装commitizen

再在package.json中配置如下内容:

  1. "config": {
  2. "commitizen": {
  3. "path": "./node_modules/cz-conventional-changelog"
  4. }
  5. },

就可以实现git cz代替git commit的效果。

这么做的好处是,执行命令后,会依次询问:

  • 这次提交的类型,比如fix、new feature、improvement还是其它。(单选,如下图)
  • 这次修改的影响范围有多大:是全局的、还是只是针对个别组件。(字符串类型,可以随意输入)
  • 简要描述修改了什么,最好是一句话,相当于修改标题。(字符串类型,可以随意输入)
  • 详细描述修改了什么,最好分段描述,相当于内容区(字符串类型,可以随意输入)
  • 是否有突破性变化(布尔类型,输入y或者n)
  • 这个改变是否会造成不良影响(布尔类型,输入y或者n),如果是则还会再询问你具体的影响是什么,通常填写禅道或其它bug管理平台的bugId。

最终提交的日志是符合谷歌的日志提交规范的。
image.png

validate-commit-msg.js

由于工程引入ghooks模块,开启了git hook,因此在git提交时总会触发eslint以及scripts/validate-commit-msg.js的代码提交日志规范的校验。

之所以在有cz-conventional-changelog的情况下,还做日志规范校验是因为总有人会有意或无意地使用git commit做代码提交。