husky本身不原生支持html,但可在pre-commit钩子中调用prettier等命令处理暂存区html文件,需配置--ignore-unknown参数防报错;commit-msg钩子应通过commitlint规范语义(如feat(html)),而非匹配文件类型;pre-push一般不加html专项检查,因其无编译链路,宜交由ci统一校验。

Husky 本身不处理 HTML 文件,但你可以让它在提交前检查、格式化或验证 HTML 相关内容——关键在于钩子脚本里调用什么命令,而不是 Husky 能“原生支持 HTML”。
pre-commit 钩子里怎么安全处理 HTML 文件
直接对 .html 文件运行 prettier 或 eslint 是可行的,但要注意三点:
- 确保
prettier已配置 HTML 支持(安装prettier即可,默认支持);若用eslint检查 HTML 中的内联脚本或 Vue/React 模板,需额外配eslint-plugin-html或对应框架插件 - 只操作暂存区文件,避免误格式化
node_modules或构建产物:用git diff --cached --name-only --diff-filter=ACM | grep '\.html$'过滤 - HTML 文件常含非标准结构(如服务端模板语法),
prettier可能报错;建议加--ignore-unknown参数跳过无法解析的文件
示例 .husky/pre-commit 片段:
#!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" <h1>只格式化暂存区的 .html 文件,忽略无法解析的</h1><p>git diff --cached --name-only --diff-filter=ACM | grep '.html$' | xargs -r prettier --write --ignore-unknown</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill6725" title="Workspace Git Backup"><img src="https://img.php.cn/upload/skill/000/000/081/179109729197557.jpg" alt="Workspace Git Backup" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill6725" title="Workspace Git Backup" class="overflowclass">Workspace Git Backup</a> <p class="overflowclass">设置自动定时备份到GitHub或GitLab。适用于用户想要备份OpenClaw工作区或其他目录。支持GitHub CLI...</p> </div> <a rel="nofollow" href="/xiazai/skill6725" title="Workspace Git Backup" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div>
commit-msg 钩子要不要校验 HTML 相关提交
不需要专门针对 HTML 校验,但如果你的项目约定「修改页面结构必须带 feat(html) 或 fix(template)」,就可以用 commitlint 统一约束。重点不是文件类型,而是提交语义。
- 配置
commitlint规则时,scope可自定义为html、template、ssr等,而非硬编码匹配文件后缀 - 校验逻辑在
.husky/commit-msg里,实际执行的是npx commitlint --edit "$1",和 HTML 无关 - 如果团队常把 HTML 修改混在样式或文案提交里,更该做的是规范
type和scope的使用场景,而不是让钩子去扫描文件类型
为什么 pre-push 一般不加 HTML 专项检查
因为 HTML 本身不编译、无类型检查、也不跑单元测试——它不像 TypeScript 或 JSX 那样有静态分析链路。所谓“HTML 检查”,通常只是:
- 用
html-validate做基础可访问性/语义校验(需单独安装) - 用
tidy或libxml2验证语法合法性(CI 场景更合适) - 检查是否意外提交了调试用的
console.log或注释(靠 ESLint +eslint-plugin-html)
这些检查开销小,但收益有限;放在 pre-push 里容易拖慢推送节奏。更合理的做法是只在 CI 流水线中运行一次 html-validate,失败即阻断部署,而非卡在本地推送环节。
真正容易被忽略的点是:Husky 钩子执行环境依赖 shell 和 Node.js,而 VSCode 内置终端可能用的是 zsh 或 PowerShell,PATH 与你日常终端不一致——导致 npx prettier 找不到。每次改完 .husky/pre-commit,务必在 VSCode 的 Git 提交面板里试一次,别只在终端跑 git commit。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










