Files
Literature-Management/commitlint.config.cjs
2026-10-21 14:42:59 +08:00

33 lines
1.5 KiB
JavaScript

// commitlint.config.cjs
//
// 验证规则仅作用于 conventional 格式(feat: ... / fix(scope): ... / chore: ...)。
// 项目风格的 [prefix] subject 会先由 .husky/commit-msg 的 preprocess 脚本
// 转成 conventional 格式,这里不需要识别 [prefix]。
//
// type-enum 接受项目所有 prefix + 常规 conventional type:
// workbench / cleanup / ui / docs / spec / plan / test / audit
// feat / fix / refactor / perf / style / build / ci / chore / revert
// audit round 8 (2026-09-14):把 type-enum 提到 module.exports.types ——
// scripts/commit-msg-preprocess.cjs 之前内联一份 FALLBACK_TYPES,与这里
// 的 type-enum 漂移风险(double source of truth)。现在 preprocess require
// 本文件拿 .types,仅在 require 失败时才走自身 FALLBACK_TYPES,白名单永远
// 单一真相。规则仍然在 rules.type-enum 里持有数组,commitlint 自己也读那处,
// .types 只是导出别名,两边永远同步。
const TYPES = [
'workbench', 'cleanup', 'ui', 'docs', 'spec', 'plan', 'test', 'audit',
'feat', 'fix', 'refactor', 'perf', 'style', 'build', 'ci', 'chore', 'revert',
];
module.exports = {
extends: ['@commitlint/config-conventional'],
types: TYPES,
rules: {
'header-max-length': [2, 'always', 80],
'type-enum': [2, 'always', TYPES],
'type-case': [2, 'always', 'lower-case'],
'type-empty': [2, 'never'],
'subject-empty': [2, 'never'],
'subject-full-stop': [2, 'never', '.'],
'header-case': [0], // 项目习惯混用大小写,不强制
},
};