作者:李旭光
引用请标明出处
1、说明
项目是一个多人协同完成同一个目标的团队组织形式,在多人协作项目中,如果代码风格统一(前端代码规范和静态代码检查约束)、代码提交信息的说明准确规范(本章介绍),那么在项目开发过程及后期协作以及Bug处理时会更加方便。
在本文中,我将介绍大家如何利用工具及约定保证大家代码提交的统一性,从而提高大家的协同效率:
- commitlint: git 提交信息规范与验证
添加如ESLint的格式规范校验,规范comiit的格式,达到团队每个人的提交风格保持一直,保证提交信息的完整和准确性
风格如下:
1 | <type>(<scope>): <subject> // Header |
- husky: 使git-hook更容易
husky继承了Git下所有的钩子,在触发钩子的时候,husky可以阻止不合法的commit,push等等。注意使用husky之前,必须先将代码放到git 仓库中,否则本地没有.git文件,就没有地方去继承钩子了。
- standard-version: 自动生成CHANGELOG 并发布版本
2、git commit message 规范
commit message格式
1 | 类型(影响范围): 描述 |
注意:
1.冒号后面有空格。
2.英文小括号。
3.正文和注脚前都要加空行。
type 类型
用于说明 commit 的类别,只允许使用下面13个标识。
1 | 'feat', // feat:新增功能 |
如果type为feat和fix,则该 commit 将肯定出现在 Change log 之中。
scope 影响范围
可根据项目组需要进行定制化设置,也可不做强制要求
subject 描述
subject是 commit 目的的简短描述,不超过50个字符,且结尾不加句号(.)。
body 详细描述
body 部分是对本次 commit 的详细描述,可以分成多行。下面是一个范例。
1 | 此次提交内容包括如下信息: |
footer
Footer 部分只用于两种情况。
- 不兼容变动(改变解决方案)
- 关闭 Issue(回复bug)
3、使用工具校验commit是否符合规范
commitlint
3.1 commitlint安装
1 | // npm 安装 |
3.2 生成commitlint.config.js配置文件
执行echo命令创建配置文件,也可以手动创建配置文件,或者从已有的配置文件进行拷贝。
1 | // 项目根目录创建commitlint.config.js |
3.3 在commitlint.config.js制定提交message规范
1 | // type(scope?): subject |
上面我们就完成了commitlint的安装与提交规范的制定。检验commit message的最佳方式是结合git hook,所以需要配合Husky
husky
3.4 husky安装
1 | npm install husky --save-dev |
3.5 husky 配置
安装成功后需要在项目下的package.json中配置
1 | // package.json |
3.5 husky 执行测试
最后我们可以正常的git操作
1 | git add . |
git commit的时候会触发commlint。下面演示下不符合规范提交示例:
1 | C:\lixg\git>git commit -m "thunisoft: abcde" |
上面的提交看反馈消息得知是type格式没有符合限制的提交类型列表,所以提交失败,虾米啊我们把type改为feat再试一下
1 | C:\lixg\git>git commit -m "feat(all): 新功能" |
修改后格式符合规范,提交成功。
参考来源
- commitlint
- husky
- 阮一峰
http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html
版权声明
Copyright by lixuguang
未经授权,严禁转载。如需转载,请联系作者。