用途:该技能帮助开发者按 Conventional Commits 规范编写提交信息,并通过 commitlint 校验,适用于提交变更、编写 PR 描述和准备发布。项目通过 @commitlint/config-conventional 与 Husky v9+ 强制执行。
提交格式:<type>(<scope>): <subject>,可附可选 body 与 footer。
类型与版本影响:feat 为 Minor(新功能);fix 为 Patch(修复);feat! 与 fix! 为 Major(破坏性变更);chore、docs、refactor、test、ci、perf 不触发发布。
可选 scope:api、web、database、types、ui、utils、infra、deps、release。
主题规则:使用祈使语气(如 add,而非 added/adds);结尾不加句号;建议 50 字符、最多 72 字符;首字母小写。
示例:feat(web): add COE comparison chart;fix(database): handle null month in query;feat!: migrate HeroUI v2 to v3,并在 footer 写 BREAKING CHANGE;chore(deps): upgrade Next.js to v16.1;refactor: simplify car makes page。多项变更可写在 body 中。
Git 钩子:pre-commit 运行 gitleaks protect --staged 后执行 pnpm lint-staged;commit-msg 运行 pnpm commitlint --edit $1。若被拒绝,检查类型是否有效、主题是否在 72 字符内、格式是否为 type(scope): subject、scope 是否在允许列表内或省略。
发布影响:semantic-release 依据提交类型决定版本号,feat 升 minor,fix 升 patch,BREAKING CHANGE footer 或 ! 后缀升 major,chore、docs、refactor、test 不发布。相关配置为 .releaserc.json 与 @commitlint/config-conventional。