使用 Commitizen 规范提交记录

/ Developer / 没有评论 / 326浏览

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-changelogCommitizen 的适配器:

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"
    }
  }
}

现在, 胡乱写的提交记录将会被拦截!