commitlint
commitlint 是被广泛采用的 Git 工具,检查提交信息,帮助团队遵守提交约定。
安装
首先你需要安装 commitlint。目前支持 commitlint v18。
shell
npm install @commitlint/cli -D
shell
yarn add @commitlint/cli -D
shell
pnpm install @commitlint/cli -D
shell
bun install @commitlint/cli -d
配置
ESM
javascript
// commitlint.config.mjs
// or commitlint.config.js with "type": "module" in package.json
import { commitlint } from '@modyqyw/fabric';
// or
// import { commitlint } from '@modyqyw/fabric/commitlint';
export default commitlint();
CJS
javascript
// commitlint.config.cjs
// or commitlint.config.js without "type": "module" in package.json
const { commitlint } = require('@modyqyw/fabric');
// or
// const { commitlint } = require('@modyqyw/fabric/commitlint');
module.exports = commitlint();
自定义
参数自定义
给导出的 commitlint
方法传参可以自定义配置,commitlint
方法接收两个参数。
第一个参数用于基本自定义,你可以传递 undefined
或对象。要明确地启用或禁用某一个配置,需要明确在传递的对象中设置 boolean 值。
目前支持以下配置:
- style:提交信息的风格,默认为
'conventional'
,可选'angular'
- monorepo:是否支持 monorepo,默认为
true
,表示自动检测,可选false
(禁用)、'learn'
、'nx'
、'pnpm-workspace'
、'rush'
javascript
// commitlint.config.mjs
// or commitlint.config.js with "type": "module" in package.json
import {
commitlint,
hasLerna,
hasNx,
hasPnpmWorkspace,
hasRush,
} from '@modyqyw/fabric';
export default commitlint({
monorepo: hasPnpmWorkspace
? 'pnpm-workspace'
: hasLerna
? 'lerna'
: hasNx
? 'nx'
: hasRush
? 'rush'
: false,
style: 'conventional',
});
编写提交信息
对于新手来说,编写提交信息并非易事。幸运的是,有很多种方式来简化这一过程。
你可以安装 VSC 插件 和 WebStorm 插件,辅助编写提交信息。
对于命令行,你可以使用 commitizen,并使用 @commitlint/prompt 实现与 commitlint 的整合。后者详见 Commitlint Guide: Use prompt。
第二个参数用于更进一步的自定义,你可以传递一个对象,用于覆盖生成的配置。
javascript
// commitlint.config.mjs
// or commitlint.config.js with "type": "module" in package.json
import { commitlint } from '@modyqyw/fabric';
export default commitlint(undefined, {
// 需要自定义的配置
});
整合
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}',
};