不能,commitlint仅校验git提交信息格式,不解析html内容;校验html需用htmlhint、prettier或tidy等专用工具,并通过husky+lint-staged在pre-commit阶段执行。

HTML模板文件能用commitlint校验吗?
不能。commitlint 只校验 git commit -m 提交信息的字符串格式,比如是否含 feat: 前缀、是否以句号结尾等。它完全不读取、不解析你的 HTML 文件内容,更不会检查 <div> 是否闭合、属性引号是否统一或缩进是否合规。
<p>常见误解是把 commitlint 当成“HTML 格式检查器”,结果在 <code>commitlint.config.js 里塞入 HTML 相关规则,或者试图让 commit-msg 钩子去 lint index.html —— 这会直接失败,因为 commitlint 没这个能力。
如果你真想校验 HTML 内容,得换工具:比如 htmlhint、prettier --check 或 tidy,它们才是专干这事的。
怎么在 git commit 前自动检查 HTML 文件格式?
靠 husky + lint-staged 组合,而不是 commitlint。核心逻辑是:只对暂存区(staged)里的 HTML 文件运行格式校验或修复。
- 安装依赖:
npm install --save-dev husky lint-staged prettier - 初始化 husky:
npx husky init,然后在.husky/pre-commit里写:npx lint-staged - 配置
lint-staged,在package.json中加:
"lint-staged": {
"*.html": ["prettier --check --ignore-unknown"]
}
--ignore-unknown 很关键:避免 Prettier 因不认识某些自定义标签(如 Vue 的 <template></template>)而报错退出;--check 表示只检查不改写,校验失败时 commit 就会被中断。
如果想自动修复再提交,把 --check 换成 --write,但注意:修复后文件状态会变,需额外加 git add 步骤,否则修改不会进 commit。
为什么 Prettier 校验 HTML 会报 SyntaxError: Unexpected token '?
这是 Node.js 解析 JS 配置文件时,误把 HTML 内容当 JS 执行了——典型场景是:你把 prettier.config.js 保存成了 prettier.config.html,或从网页复制代码时带入了隐藏的 <script></script> 标签或 HTML 实体(如 )。
正确做法只有两种:
- 用纯 JS 导出对象:
module.exports = { htmlWhitespaceSensitivity: 'css' }; - 或用 JSON:
.prettierrc文件内容为{"htmlWhitespaceSensitivity":"css"}
别用 .prettierrc.js 却在里面混写 HTML 片段;也别用浏览器打开配置文件——它不是网页,是 Node 模块。
团队协作时 HTML 格式不一致,光靠 pre-commit 钩子够吗?
不够。pre-commit 只拦住本地提交,但拦不住别人 push 上来的坏格式,也拦不住 CI/CD 流水线里跳过钩子的构建。
必须分三层加固:
- 开发侧:VS Code 开启
editor.formatOnSave+ Prettier 插件,实时格式化 - 提交侧:husky + lint-staged 在
pre-commit检查,失败则中断 - 集成侧:CI 脚本里加
prettier --check "**/*.html",不通过就 fail pipeline
最容易被忽略的是第三层。很多团队配好了本地钩子,却没在 CI 里加校验,结果 PR 合并后才发现一堆格式污染 —— 因为 CI 是绕过本地钩子直接跑的。











