在软件开发过程中,代码的版本控制和管理是必不可少的,而 commit message(提交信息)是版本控制中至关重要的标记。一个好的 commit message 可以帮助开发者更好地理解代码的变化,更好地进行版本控制。而 @commitlint/test 就是一个帮助开发者规范 commit message 的 npm 包。
@commitlint/test 简介
@commitlint/test 是一个轻量、可扩展的 commit message 校验工具,它通过配置 commit message 的规则,实现对 commit message 进行校验。它的优点在于:
- 适用于大部分的项目,可根据项目需求进行定制
- 提供了一套默认规则
- 支持多语言
- 可与常见的版本控制系统(如 Git、SVN)集成
安装与配置
安装
在终端中输入以下命令进行安装:
$ npm i -D @commitlint/test
配置
安装完成后,新建一个 .commitlintrc.js
文件,用于配置 commit message 的规则。其中,rules
字段是最重要的部分,通过它来指定 commit message 的规则。
-- -------------------- ---- ------- -------------- - - -------- ------------------------------------ ------ - ------------ - -- --------- - ------- ------ ------- -------- ----------- ------- -------- --------- ------- -------- ---- - -- -------------------- --- --------- ----- ------------- --- --------- -------------- --------------- --- --------- ----------------- ------------------------- --- --------- ---- - --
上面的代码是一个常见的 commitlint
配置文件,它的意思是:
- 以
@commitlint/config-conventional
为基础配置 - 指定
type-enum
、header-max-length
、scope-case
、subject-case
、footer-max-line-length
这 5 个规则 type-enum
规则指定 commit message 的类型必须为feat
、fix
、docs
、style
、refactor
、test
、chore
、revert
、perf
、build
、ci
中的一种header-max-length
规则指定 commit message 的头部长度不得超过 100 个字符scope-case
规则指定 commit message 的 scope 必须为小写字母subject-case
规则指定 commit message 的内容必须遵循sentence-case
的格式footer-max-line-length
规则指定 commit message 的底部长度不得超过 100 个字符
规则可根据自己项目的需求而定制,对于已有配置文件源的项目,也可直接继承,具体请参考 commitlint 的官方文档。
使用
使用 @commitlint/test 的方式有很多种,这里介绍三种比较常用的方式。
在 git commit 时调用
在 git commit 前加上 commit-msg
钩子来调用 @commitlint/test:
"scripts": { "commitmsg": "commitlint -E HUSKY_GIT_PARAMS" },
在提交前进行校验
使用 npm run commit
命令进行校验,但需要先安装 commitizen
和 cz-conventional-changelog
:
$ npm install -D commitizen cz-conventional-changelog
然后在 package.json
文件中添加以下代码:
"scripts": { "commit": "cz" }, "config": { "commitizen": { "path": "cz-conventional-changelog" } }
执行 npm run commit
命令后,会自动生成选择 commit message 类型、提交代码内容、选择文件变更的步骤,帮助 commit message 更符合规范。
在提交代码时使用
对于不能在 submit 前进行校验的情况,比如在 Webpack 的 pre-commit
钩子中的处理,可以使用以下代码:
-- -------------------- ---- ------- ----- - ---- - - ---------------------------- ----- ------- - ------- --------- ----- ------ - - -- --- -- -- ------------- ------------------- -- - ----- ------- - -------------- -- ------- - --------------------- ---------------- - ------------------- ------- -- -------- ---------------- ---
当 commit message 不符合规范时,lint 函数会返回错误信息,否则就返回 null
。
示例
下面就是一个符合规范的 commit message:
feat: 添加新功能 添加了一个新功能,可以实现 XXX 操作 closes #123
其中,feat
表示添加了新功能;冒号后面是 commit message 的内容,内容以“摘要+空行+详细说明”形式呈现;最后则是相关的 issue 编号。
结论
通过本文的介绍,你已经了解到了 @commitlint/test 的基本使用方式和配置方法,以及一些常见的 commit message 规范。使用 commit message 校验工具,能够使你的团队更加高效地进行版本控制和代码管理。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/94255