为什么需要规范commit日志?
-
commit message 是程序员开发的日常操作, 但是实际工作中却常常被大家忽略
-
目前commit message 处于五花八门的书写风格,十分不利于阅读和维护
-
优秀的互联网科技公司都有一套代码提交规范,尤其是在一些大型开源项目中,commit message 都是十分一致
规范commit日志的好处
-
团队形成一致的代码提交风格,更好的提高工作效率
-
规范的 commit message 有助于团队其它人员 review, 还可以有效的输出 CHANGELOG, 对项目十分重要
-
成为一名有追求的工程师
工具介绍
- @commitlint/cli: commitlint 的命令行工具
- @commitlint/config-conventional: commitlint 的规则集
- husky: 阻止不符合提交规则的 git 记录
安装步骤
1. 环境准备:
安装node环境,从Node.js官网(https://nodejs.org/en/)下载对应平台的安装程序,终端执行命令 node -v 和 npm -v 可以查看安装的node,npm的版本号,出现如下即成功。
2. commitlint 安装
npm install --save-dev @commitlint/cli @commitlint/config-conventional
解析: commitlint/config-conventional 是规则集,比较常用的 Conventional Commits 是 Angular 约定。
3. 配置 commitlint 规则 commitlint.config.js
新建 commitlint.config.js 文件,增加配置:
module.exports = {
extends: ["@commitlint/config-conventional"],
};
或者一键生成配置文件
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
生成的配置文件是默认的规则,也可以自己定义规则,提交格式则如下:
<type>(<scope>): <subject>
1. type 为必填项,用于指定 commit 的类型。
- build : 更改构建系统和外部依赖项(如将 gulp 改为 webpack,更新某个 npm 包)
- ci : 对 CI 配置文件和脚本的更改
- docs : 仅仅修改文档说明
- feat : 增加一个新特性
- fix : 修复一个 bug
- perf : 更改代码以提高性能
- refactor : 代码重构时使用
- style : 不影响代码含义的改动,例如去掉空格、改变缩进、增删分号
- test : 增加新的测试功能或更改原有的测试模块
2. scope 为非必填项,用于描述改动的范围,可以是文件的名称,最好包含路径。
3. subject 是必填项,这次提交的日志信息,提交日志必须有意义。
一般情况下,默认的就够用了。
当然,如果需要自定义限制这些规则,不启用默认的规则,可以把配置写的更详细
module.exports = {
extends: [
"@commitlint/config-conventional"
],
rules: {
'type-enum': [2, 'always', [
'upd', 'feat', 'fix', 'refactor', 'docs', 'chore', 'style', 'revert'
]],
'type-case': [0],
'type-empty': [0],
'scope-empty': [0],
'scope-case': [0],
'subject-full-stop': [0, 'never'],
'subject-case': [0, 'never'],
'header-max-length': [0, 'always', 72]
}
};
rule配置说明: rule由name和配置数组组成,如:‘name:[0, ‘always’, 72]’,数组中第一位为level,可选0,1,2,0为disable,1为warning,2为error,第二位为应用与否,可选always|never,第三位该rule的值。
4. 配置 husky
npm i husky -D(如果安装失败需检查node版本,需要node10以上)
husky 的配置可以使用 .huskyrc、.huskyrc.json、.huskyrc.js 或 husky.config.js 文件。
这里介绍在 package.json 增加以下配置:
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
},
5. 可以提交日志了。
$ git commit -m "增加commit校验"
husky > commit-msg (node v12.14.0)
⧗ input: 增加commit校验
✖ subject may not be empty [subject-empty]
✖ type may not be empty [type-empty]
✖ found 2 problems, 0 warnings
ⓘ Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint
husky > commit-msg hook failed (add --no-verify to bypass)
以上就是错误示范,按照规定示范:
git commit -m "feat: 新功能提交"
注意: 冒号是英文,后面跟一个英文空格

564

被折叠的 条评论
为什么被折叠?



