| name | conventional-committer |
| description | 需要生成 Conventional Commit 提交消息并执行单次提交时使用。适用于 feat、fix、docs、refactor、test、build、ci、chore 等常规提交场景。先检查质量门,再分析 diff,再生成符合 commitlint 预期的消息。 |
| metadata | {"internal":false} |
Conventional Committer
铁律:不要在不了解本次实际变更范围和质量状态的前提下直接 git add . 然后提交。
工作流
常见 type
- feat
- fix
- docs
- refactor
- test
- build
- ci
- chore
- perf
- revert
消息格式规范
以下规范为本项目 commit message 的默认基线(参考 without_gitmoji.md)。当用户显式声明其他规则时,以用户声明为准;未声明时强制执行本规范。
结构
单一类型修改:
<类型>(<作用域>): <主题>
<空行>
<正文>
多类型修改:选择最大类型作为主类型(顺序 feat > refactor/perf > fix > 其他),其余改动写入正文。
<主类型>(<作用域>): <主题>
<空行>
- 类型1的正文
- 类型2的正文
特例:
README / API / *.md / markdown 及其改动一律视为 docs。
unit / e2e / test 及其改动一律视为 test。
- 无法归类时一律视为
chore。
主题行(subject)
- 主类型与作用域必须为英文。
- 采用祈使语气,首字母不大写,末尾不加句点。
- 最长 100 个字符。
- 必须使用简体中文(除非用户显式指定其他语言)。
- 无必要时不要在主题中使用括号备注;备注类信息沉到正文。
正文(body)
- 以
- 作为列表符号。
- 每行最长 120 个字符,内容应精简。
- 简单说明「做了什么」以及「为什么这么做」。
- 必须使用简体中文(除非用户显式指定其他语言)。
- 改动简单时可不写正文;不要堆砌过多条目。
硬性要求
- 只能输出提交信息本身,禁止附加解释、问题、注释、格式说明或元数据。
- 默认使用简体中文;用户明确指定其他语言时跟随用户。
- type / scope 永远使用英文。
示例
refactor(server): 优化服务器端口配置
- 将端口变量重命名为大写形式(PORT)
反模式
- 不看 diff,直接用模糊消息如 update files。
- 把多类变更混成一个没有 scope 的提交。
- 在质量检查未完成时默认提交。
- 在 husky hook 兼容的环境下滥用
--no-verify,跳过了本应生效的检查。
- 主题或正文出现英文长句,违反默认简体中文约定。
- 在主题里塞括号备注(如
feat(api): 新增支付接口(兼容老逻辑)),备注应沉到正文。
- 多类型变更没有收敛主类型,导致 type 难以反映本次主体意图。
交付前检查