为什么安装了prettier的husky hook后提交还是没格式化?

司徒兴瑞 阅读 10

刚给项目配了husky + prettier的pre-commit钩子,但每次提交代码都没触发格式化。已经按文档装了husky、prettier、lint-staged,package.json里配置了:


"husky": {
  "hooks": {
    "pre-commit": "lint-staged"
  }
},
"lint-staged": {
  "*.{js,css}": ["prettier --write"]
}

提交时控制台连提示都没有,文件也没变化。试过删除node_modules重装,甚至把prettier命令改成npm脚手架调用,还是不行。是不是和git版本有关?或者需要额外配置git属性?

我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
令狐雨妍
你这个问题我遇到过,确实有点坑。首先你的配置看起来是没问题的,但问题可能出在husky的版本上。新版本的husky改了配置方式,已经不认你这种写法了。

现在你需要做的是把husky初始化一下,用命令 npx husky-init 跑一遍,这会在项目根目录生成一个.husky文件夹。然后打开里面的pre-commit文件,把内容改成 npx lint-staged

另外提醒一下,现在的git确实需要手动允许钩子执行,你得确保项目的.git目录下有hooks文件夹,没有的话就自己建一个。还有就是检查下node版本,最好用16以上的,太老的版本可能会有问题。

最后别忘了给package.json加个prepare脚本:"prepare": "husky install",这样能保证每次安装依赖后钩子都能正常注册。

这些都弄完再试试提交,应该就能触发格式化了。要是还不行,可能是你本地的git配置禁用了钩子,可以用 git config core.hooksPath 查看一下路径对不对。
点赞 3
2026-02-19 12:34