Skip to content

commitlint

commitlint 是被广泛采用的 Git 工具,检查提交信息,帮助团队遵守提交约定。

安装

首先你需要安装 commitlint。目前支持 commitlint v19。

shell
npm install @commitlint/cli -D
shell
yarn add @commitlint/cli -D
shell
pnpm install @commitlint/cli -D

配置

在项目根目录下创建 commitlint.config.mjs

javascript
// commitlint.config.mjs
import { commitlint } from "@modyqyw/fabric/commitlint";

export default commitlint();

自定义

参数自定义

给导出的 commitlint 方法传参可以自定义配置,commitlint 方法接收两个参数。

第一个参数用于基本自定义,你可以不传递或传递空对象表示使用默认值。要明确地启用或禁用某一个配置,需要明确在传递的对象中设置 boolean 值。

以下是默认配置:

javascript
// commitlint.config.mjs
import { hasLerna, hasNx, hasPnpmWorkspace, hasRush } from "@modyqyw/fabric";
import { commitlint } from "@modyqyw/fabric/commitlint";

export default commitlint({
  // 是否提供 monorepo 支持
  // 默认为 true,即自动检测
  // 可选 false(禁用)、'learn'、'nx'、'pnpm-workspace'、'rush'
  monorepo: true,
  // 提交信息风格
  // 默认为 'conventional',即约定式提交
  // 可选 'angular'
  style: "conventional",
});

编写提交信息

对于新手来说,编写提交信息并非易事。幸运的是,有很多种方式来简化这一过程。

你可以安装 VSC 插件WebStorm 插件,辅助编写提交信息。

对于命令行,你可以使用 commitizen,并使用 @commitlint/prompt 实现与 commitlint 的整合。后者详见 Commitlint Guide: Use prompt

第二个参数用于更进一步的自定义,你可以传递一个对象,用于覆盖生成的配置。

javascript
// commitlint.config.mjs
import { commitlint } from "@modyqyw/fabric/commitlint";

export default commitlint(
  {},
  {
    // 需要自定义的配置
  },
);

FAQ

整合 simple-git-hooks?

如果你使用该库提供的 simple-git-hooks 配置,请查看 simple-git-hooks 章节

如果你没有使用该库提供的 simple-git-hooks 配置,可以参考以下配置。

javascript
// simple-git-hooks.cjs
module.exports = {
  "commit-msg": "npx commitlint --edit ${1}",
};

Released under the MIT License.