# 快速入门
维护人:东润(chenwr@authine.com)、木木(linqh@authine.com)
# 前言
为了更好规范 commit
的提交内容,于是我们定制奥哲内部的commitlint校验库。
- 中文化的 feat 提示
- 拓展了 feat 的类型
在已配置好的项目中使用以下命令提交代码
git add .
npm run cz
2
效果如下
若想了解具体发生了什么请继续浏览下文。
# 规格
commit message基础语法规范可以参考提交规范
以下是对基础语法的二次定制
# 差异
# Header
Header
分为type
scope
subject
三个部分,其中是type
subject
必填的,scope
是可选。
提示
社区推崇的 Angular Commit Message spec 中 ,Header
长度不允许超过75字符
而在我们规则库放宽松了,只要不超过100字符即可
字符长度 = type+subject+scope
# type
在内部库规则中type
用于说明 commit
的类别,在内部库中定制以下13种类别
特征 | 描述 |
---|---|
feat | 用于添加新功能 |
improvement | 对某个功能的改进 |
fix | 修复某个功能缺陷(Bug) |
revert | 用于代码回滚,比如撤回之前某个提交 |
WIP | 正在开发的功能或者其他东东(半成品功能),不影响整个项目的运转 |
docs | 文档类的修改(不涉及代码) |
style | 不会影响代码含义的更改,例如空格,格式化,缺少分号等等 |
refactor | 组件重构或者代码逻辑有重大变化 |
perf | 优化组件代码性能 |
test | 用于各种测试,单元测试、端对端测试等 |
chore | 更改构建过程或辅助工具和诸如文档生成之类的库 |
build | 影响构建系统或外部依赖项的更改,例如gulp,broccoli,npm |
ci | 对CI配置文件和脚本的更改,例如Travis, Circle, BrowserStack, SauceLabs |
# Body
Body
部分是对本次 commit
的详细描述,支持多行描述您所做的事情, 换行使用|
。
# 比如输入
改动了 props,但是不影响运行|修复了点击没法触发回调函数的问题|引入了 xxx指令
# 实际提交就会转成
改动了 props,但是不影响运行
修复了点击没法触发回调函数的问题
引入了 xxx指令
2
3
4
5
6
7
# 项目引入
使用以下依赖包前要先安装 husky
npm install -D husky
提示
若项目基于@vue-cli创建请参考这里提交钩子
# 基础系统组项目
安装以下依赖
npm install -D @h3/commitlint-config-standard @h3/cz-customizable-config-standard
@h3/commitlint-config-standard
: 这是针对基础组commit规则的定制化@h3/cz-customizable-config-standard
: 这是针对基础组commit终端交互的定制化
在package.json 配置以下脚本
{
...
"scripts": {
...
"cz":"git-cz",
...
}
// Husky
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
},
// 项目基于@vue-cli创建 gitHooks
"gitHooks": {
"commit-msg": "commitlint -e -V ",
},
"config": {
// commitizen adapter 配置
"commitizen": {
"path": "cz-customizable"
},
// cz-customizable 自定义配置
"cz-customizable": {
"config": "./node_modules/@h3/cz-customizable-config-standard"
}
},
...
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
创建commitlint.config.js,内容如下
module.exports = { extends: ['@h3/commitlint-config-standard'] };
完成以上步骤后,请使用以下命令进行提交
npm run cz
# 业务组项目
安装以下依赖
npm install -D @h3yun/commitlint-config @h3yun/cz-customizable-config
@h3yun/commitlint-config
: 这是针对业务组commit规则的定制化,与@h3/commitlint-config-standard
区别在会校验该commit
是否填写了关联的需求或缺陷的编号,如#10000@h3yun/cz-customizable-config
: 这是针对业务组commit终端交互的定制化,与@h3/cz-customizable-config-standard
区别在需要强制填写关联的需求或缺陷的编号,及忽略对body
breaking
close issues
提问。
在package.json 配置以下脚本
{
...
"scripts": {
...
"cz":"git-cz",
...
}
// Husky
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
},
// 项目基于@vue-cli创建 gitHooks
"gitHooks": {
"commit-msg": "commitlint -e -V ",
},
"config": {
// commitizen adapter 配置
"commitizen": {
"path": "cz-customizable"
},
// cz-customizable 自定义配置
"cz-customizable": {
"config": "./node_modules/@h3yun/cz-customizable-config"
}
},
...
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
创建commitlint.config.js,内容如下
module.exports = { extends: ['@h3yun/commitlint-config'] };
完成以上步骤后,请使用以下命令进行提交
npm run cz
# FAQ
# 为什么需要使用定制commit规则
这样能从 commit log 中快速获知此次修改是一个新功能还是一个缺陷修改,使得团队协作更加顺畅。
# 相关资源
@commitlint/config-conventional 遵循angular规范的规则
cz-conventional-changelog 遵循angular规范的 commitizen adapter
cz-customizable可定制化 commitizen adapter
huskygit hooks触发库
git 官网git hooks 描述
git 中文官网git hooks 中文描述