采用 cz-customizable 规范代码提交信息

1,454 阅读2分钟

采用 cz-customizable 规范代码提交信息

问题

当一个项目提交过很多次或者经过很多人修改过后可能会出现这样的问题,由于这样一个项目是多人修改的,并且每个人代码习惯不同,提交到代码仓库的代码风格五花八门,并且commit log乱七八糟,很难从中提取出有用的信息,那么如果在将来出现了修改新特性,或者替换新模块相关的需求,就会难以从中找到合适的位置切入,因此规范commit-log显得尤为重要,以下是规范后的效果

image-20221002172009401

image-20221002172106038

方案

这里我推荐使用cz-customizable来帮助规范commit-log,和husky不同,cz并不验证提交信息的正确性而是直接在cli阶段直接解决问题

image-20221002173209043

提交信息风格也是严格按照谷歌Anguar Jsconventional commit风格处理的

 <type>[optional scope]: <description>
 ​
 [optional body]
 ​
 [optional footer(s)]

image-20221002173646673

提交后结果:

image-20221002173811615

配置

cz的配置相较于husky更为简单,支持全局安装

安装cz-customizable

 yarn add cz-customizable

配置standalone mode

首先需要安装cz-customizable

 yarn add cz-customizable --save-dev

package.json中配置新的脚本

 "scripts" : {
   ...
   "commit": "./node_modules/cz-customizable/standalone.js"
 }

如果需要自定义配置文件则需要在根目录下创建一个名为.cz-config.js的文件

 module.exports = {
   types: [
     { value: 'feat✨', name: '特性: 一个新的特性' },
     { value: 'fix🐞', name: '修复: 修复一个Bug' },
     { value: 'docs📚', name: '文档: 变更的只有文档' },
     { value: 'style💅', name: '格式: 空格, 分号等格式修复' },
     { value: 'refactor🛠', name: '重构: 代码重构,注意和特性、修复区分开' },
     { value: 'perf🐎', name: '性能: 提升性能' },
     { value: 'test🏁', name: '测试: 添加一个测试' },
     { value: 'revert⏪', name: '回滚: 代码回退' },
     { value: 'chore🗯', name: '工具:开发工具变动(构建、脚手架工具等)' },
     { value: 'merge⌛', name: '合并:合并代码' },
     { value: 'build📦', name: '打包: 打包发布' },
     { value: 'ci🔧', name: '集成: 持续集成' },
     { value: 'release🚀', name: '发布: 发布新版本' },
     { value: 'other🌈', name: '其他: 其他改动,比如构建流程, 依赖管理' },
 ​
   ],
   messages: {
     type: '选择一种你的提交类型:',
     customScope: '请输入修改范围(可选):',
     subject: '短说明:',
     body: '长说明,使用"|"换行(可选):',
     footer: '关联关闭的issue,例如:#31, #34(可选):',
     confirmCommit: '确定提交说明?'
   },
   allowCustomScopes: true,
   allowBreakingChanges: ['特性', '修复'],
   subjectLimit: 100
 }

以上内容均可修改,然后需要运行上述脚本yarn run commit

配置cz-customizable作为提交插件

首先需要全局安装commitizen

 yarn add -g commitizen

配置commitizen,在根目录package.json中添加

 ...
 "config": {
   "commitizen": {
     "path": "node_modules/cz-customizable"
   }
 }

使用

以常见的add commit push为例

 git add .
 git cz
 #cz 替代了commit

然后根据提示键入相应信息即可