最常见原因是husky未真正启用:需执行npx husky install创建.husky目录并设置钩子路径,确保.husky/pre-commit存在且有可执行权限(chmod +x),同时package.json中应含"prepare": "husky install"以支持自动启用。

pre-commit钩子不触发,git commit直接通过了
最常见原因是 Husky 没真正启用——它依赖 .husky 目录和 Git 钩子脚本文件存在且可执行。很多项目只装了依赖但没运行初始化命令。
- 确认是否执行过
npx husky install:该命令会在项目根目录创建.husky文件夹,并设置 Git 钩子路径 - 检查
package.json中是否有"prepare": "husky install":没有的话,别人npm install后不会自动启用 Husky - 手动验证钩子是否存在:
ls .husky/pre-commit应该返回一个可执行 shell 脚本;如果文件为空或权限不对(比如缺少x),用chmod +x .husky/pre-commit修复 - 注意 Windows 用户:Git Bash 和 CMD 行为不同,建议统一用 Git Bash 执行
git commit,避免 PowerShell 下钩子静默失效
lint-staged 只校验部分文件,*.html 被跳过了
默认情况下 lint-staged 不处理 HTML 文件,因为 ESLint 默认不解析 HTML,而 Prettier 对 HTML 的支持需显式启用。
- 确保
lint-staged配置中包含 HTML 扩展名:"*.html": ["prettier --write"] - 如果要用 ESLint 检查内联 JS(如
<script></script>块),需额外安装eslint-plugin-html并在.eslintrc.js中启用:plugins: ["html"],且overrides中指定files: ["*.html"] - 注意路径匹配:Prettier 的
--write对 HTML 有效,但 ESLint 的--fix对纯 HTML 文件无效,不要写成["eslint --fix"],否则会报错退出并阻断提交 - 推荐组合:
"*.html": ["prettier --write", "git add"],轻量、安全、生效快
提交时卡住或报错 Cannot find module 'prettier'
这是典型的依赖作用域问题:Husky 钩子在 Git 环境下执行,可能找不到 node_modules 中的二进制命令。
- 所有钩子命令必须用
npx显式调用,例如npx lint-staged或npx prettier --write,不能直接写prettier - 避免在
.husky/pre-commit中写npm run lint这类 script —— 它依赖npm环境变量,在某些 CI 或低权限终端下不可靠 - 如果用了
pnpm,确保pnpm dlx可用,或统一用npx(它会 fallback 到node_modules/.bin) - 临时调试方法:在
.husky/pre-commit开头加echo "NODE_PATH: $NODE_PATH"和which prettier,看路径是否正常
HTML 格式化后样式错乱,比如 <br> 被换行或缩进
Prettier 对 HTML 的格式化策略是“语义优先”,不是“原样保留”。它会重排标签、调整属性顺序、折叠空格,这在某些模板场景下会破坏渲染逻辑(如内联样式、CSS-in-JS 注入点)。
- 不要对生产构建产物(如
dist/index.html)运行 Prettier —— 它们应由构建工具生成,而非人工编辑 - 限制作用范围:在
lint-staged中只针对源码 HTML(如src/*.html或public/*.html),避免误伤 - 禁用特定规则:在
.prettierrc中加"htmlWhitespaceSensitivity": "ignore",减少换行敏感度;若仍出问题,可设"bracketSameLine": true控制自闭合标签格式 - 极端情况可跳过 HTML:把
lint-staged改为只处理*.{js,ts,css},HTML 交给人工 review 或专用工具(如html-validate)
git add + git commit,再看输出和文件变化,比读十遍文档都管用。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











