# 快速入门

维护人:东润(chenwr@authine.com)、木木(linqh@authine.com)

# 前言

为了更好规范 commit 的提交内容,于是我们定制奥哲内部的commitlint校验库。

  • 中文化的 feat 提示
  • 拓展了 feat 的类型

在已配置好的项目中使用以下命令提交代码

git add .
npm run cz
1
2

效果如下

h3-commitlint-biz.gif

若想了解具体发生了什么请继续浏览下文。

# 规格

commit message基础语法规范可以参考提交规范

以下是对基础语法的二次定制

# 差异

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指令
1
2
3
4
5
6
7

# 项目引入

使用以下依赖包前要先安装 husky

npm install -D husky
1

提示

若项目基于@vue-cli创建请参考这里提交钩子

# 基础系统组项目

安装以下依赖

npm install -D @h3/commitlint-config-standard @h3/cz-customizable-config-standard
1
  • @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"
    }
  },
  ...
}
1
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'] };
1

完成以上步骤后,请使用以下命令进行提交

npm run cz
1

h3-commit-lint-standard.gif

# 业务组项目

安装以下依赖

npm install -D @h3yun/commitlint-config @h3yun/cz-customizable-config
1
  • @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"
    }
  },
  ...
}
1
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'] };
1

完成以上步骤后,请使用以下命令进行提交

npm run cz
1

h3-commitlint-biz.gif

# FAQ

# 为什么需要使用定制commit规则

这样能从 commit log 中快速获知此次修改是一个新功能还是一个缺陷修改,使得团队协作更加顺畅。

# 相关资源