在开发中,规范 commit message 是非常重要的,方便项目代码的维护与迭代。而 commitlint 是一个用于检查 commit message 是否符合规范的工具。在 commitlint 中,可以使用 commitlint-config-armour 配置来指定 commit message 的规范格式。
安装
首先,需要先安装 commitlint-cli 工具和 commitlint-config-armour 插件。
使用 npm 全局安装 commitlint-cli:
npm install -g commitlint-cli
在项目中本地安装 commitlint-config-armour:
npm install --save-dev commitlint-config-armour
配置
在项目根目录下创建 .commitlintrc.js
文件,配置 commitlint-config-armour 的使用:
module.exports = { extends: ['@commitlint/config-conventional', 'commitlint-config-armour'], rules: { // 在这里可以自定义 commitlint 规则 } };
config-conventional
是一个常用的 commitlint 配置规则,将其与 commitlint-config-armour
一同使用即可。
使用
在 commit message 中按照规定格式进行编写即可。
示例:
feat: 添加 hello world 功能 - 添加了 hello world 功能 - 修复了一些 bug - 测试通过
以上 commit message 使用了 feat: 添加 ... 功能
的格式,符合 commitlint-config-armour 配置规则。
还可以使用一些预定义的关键词,如下所示:
feat
: 新功能(feature)fix
: 修复 bugdocs
: 文档更新style
: 样式修改(例如:字体修改,颜色修改等等)refactor
: 代码重构test
: 测试更新chore
: 构建/工具更新
自定义规则
当然,也可以根据自己的项目使用习惯,自定义 commitlint 规则。示例如下:
-- -------------------- ---- ------- -------------- - - -------- ----------------------------------- ---------------------------- ------ - ------------ --- --------- -------- ------ ------- -------- ----------- ------- -------- ------------- ----------------------- --- --------- ----- --------------------- --- --------- ---- --------------- ---- -------------- ---- ---------------- --- --------- ------------- ---- ------------ --- --------- ------------- - --
以上是自定义的一些 commitlint 规则,包括:
type-enum
:强制 commit message 中的 type 值必须为指定的几种类型之一。body-max-line-length
:强制 commit message 中的 body 部分每行的最大字符数为 120。subject-max-length
:强制 commit message 中的 subject 部分的最大字符数为 60。subject-case
:使 commit message 中的 subject 部分不强制使用大小写格式。scope-empty
:不强制 commit message 中的 scope 部分为空。subject-empty
:强制 commit message 中的 subject 部分不为空。type-empty
:不强制 commit message 中的 type 部分为空。type-case
:强制 commit message 中的 type 部分为小写格式。
综上,使用 commitlint-config-armour 工具可以让我们对 commit message 的格式更加规范化,利于团队协作与项目维护。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600672e50520b171f02e1dc8