Skip to content

参考

基于 commitlint v21.0.2 编写

速查

  • 用法:commitlint [选项](默认从 stdin 读消息)
  • 读消息:--edit/-e <file>(钩子里常配 $1
  • 范围:--from/-f--to/-t--last/-l--from-last-tag
  • 配置:--config/-g--extends/-x--parser-preset/-p
  • 排查:--print-config--verbose/-V
  • 门禁:--strict/-s(warning 退 2 / error 退 3)
  • 兼容:--default-config--legacy-output(恢复 v21 前输出)
  • 版本节点:v8 起合法提交静默;v21 起输出改用换行分隔

常用 CLI 参数

参数作用
--edit <file>-e读取消息文件(钩子里配 $1,默认 .git/COMMIT_EDITMSG
--from <ref>-f校验范围下界(起点提交)
--to <ref>-t校验范围上界(终点提交)
--last-l只校验最后一次提交
--from-last-tag以最近一个 tag 为范围下界
--config <path>-g指定配置文件(缺失则退出码 9)
--extends <a> <b>-x命令行追加要继承的共享配置
--parser-preset <p>-p指定 conventional-commits-parser 预设
--format <fmt>-o输出格式
--help-url <url>-H错误信息中附带的帮助链接
--print-config打印继承合并后的最终配置(text/json)
--default-config无配置时用内置约定式默认规则
--verbose-V通过时也打印反馈
--quiet-q关闭控制台输出
--strict-s严格模式:warning 退 2、error 退 3
--legacy-output使用 v21 之前的输出格式
--color-c彩色输出(默认开)
--version-v版本号

完整列表见官方 CLI reference

配置字段速查

字段作用
extends继承共享配置(数组,递归合并)
rules自定义规则,覆盖继承值
parserPreset如何把消息解析成 type/scope/subject/body/footer
formatter结果输出所用的格式化包(默认 @commitlint/format
ignores函数数组,返回 true 则跳过该消息
defaultIgnores是否启用内置忽略(merge/revert/版本号等)
helpUrl校验失败时提示的帮助链接
prompt交互式提交(cz-commitlint)的 settings/messages/questions

配置文件名

.commitlintrc · .commitlintrc.{json,yaml,yml,js,cjs,mjs,ts,cts,mts} · commitlint.config.{js,cjs,mjs,ts,cts,mts} · package.jsoncommitlint 字段。

规则三元组

js
"rule-name": [level, applicable, value]
  • level0 关闭 / 1 警告 / 2 错误
  • applicable'always'(必须满足)/ 'never'(绝不允许)
  • value:比较值(部分规则不需要)

规则分组与 config-conventional 默认值见 规则

生态包

作用
@commitlint/cli命令行本体
@commitlint/config-conventional约定式规则集(最常用)
@commitlint/config-angularAngular 风格规则集
@commitlint/config-lerna-scopes按 monorepo 包名约束 scope
@commitlint/prompt-cli独立的交互式提交命令
@commitlint/cz-commitlintcommitizen 适配器
@commitlint/format默认输出格式化器

版本要点

  • v8 起:提交合法时默认无输出,正向反馈需 --verbose
  • v21 起:失败输出改用换行分隔(不再是早期冒号样式),旧格式用 --legacy-output 恢复。
  • 配合 husky v9npx husky init(v8 用 husky install)。
  • 交互式提交需 commitlint 及其共享配置 ≥ 12.1.2

相关链接