直接安装vivaxy的Conventional Commits插件并重启VSCode才生效,它仅校验VSCode内提交(非终端git commit -m),scope须小写且代表逻辑边界而非路径,与Copilot可共存但需配置提示词,不替代commitizen或Husky。

直接装 Conventional Commits(作者:vivaxy)插件,开箱即用,不配 CLI 也能实时提示和提交前校验;终端里手敲 git commit -m 不受控,这是设计如此,不是 bug。
怎么装和启用才真正生效
在 VSCode 扩展市场搜 Conventional Commits,认准作者是 vivaxy,点安装后必须重启 VSCode。不重启,插件不会监听 Source Control 面板的提交动作。
- 别选名字带
gitmoji或commitizen的插件——前者只管 emoji,后者强依赖本地cz-conventional-changelog,容易和 VSCode 提交流程打架 - 装完不用改默认设置就能用:点 Source Control 面板的 ✔️ 按钮或按
Ctrl+Shift+P→ 输入Git: Commit,编辑框会自动弹出格式提示 - 如果没反应,检查是否误开了其他 Git 插件(比如某些“智能提交”类插件),它们可能劫持了提交入口
scope 必须小写,但我的文件夹名是 PascalCase 怎么办
scope 不是路径映射,而是逻辑边界。规范强制要求小写,插件报 scope must be lower case 是对的,不是要你改源码命名。
- 把
src/components/UserProfile映射为components或ui,而不是userprofile或UserProfile - 如果团队约定所有 API 相关变更都用
api,那就统一用,哪怕实际改动分散在services/和hooks/下 - 避免用连字符以外的分隔符:
user-profile✅,user_profile❌,userProfile❌
为什么 git commit -m 能绕过插件校验
插件只拦截 VSCode 内部提交流程(Source Control 面板、命令面板调用 Git: Commit),对终端命令完全无感知。这是它的定位决定的:辅助输入,不是守门员。
-
conventionalCommits.enforceOnCommit设为true后,仅对 VSCode 提交生效,不会重写系统级git命令行为 - 想全局拦截,得配
Husky + @commitlint/cli,插件和钩子是互补关系,不是替代关系 - 日常建议养成用 VSCode 提交面板的习惯;如果总切终端敲
-m,插件就等于没装
和 Copilot 或 commitizen 能不能共存
能技术上共存,但不推荐混用——提示逻辑冲突、交互卡顿、格式输出不一致是常见问题。
- Copilot 生成提交信息时,可在
Settings → Commit Message Generation: Instructions里粘贴规范提示词,例如:strictly follow Conventional Commits: <type>(<scope>): <subject>,这样它输出的格式和插件校验规则对得上 - 如果项目已用
commitizen,停用Conventional Commits插件更稳妥;两者都启用时,cz可能覆盖插件的模板选择界面 - 个人或小团队开发,优先用插件;中大型项目且已有 CLI 工具链,就统一走
npm run commit流程
最容易被忽略的是:插件不解决“写什么”的问题,只管“怎么写”。类型选 feat 还是 refactor,scope 该划多细,这些得靠团队对齐,不是装个插件就自动变规范。


















