husky 和 lint-staged 是 node.js 环境下的 git hooks 工具,非 webstorm 内置功能;webstorm 仅调用 git 命令,实际钩子由 git + husky 触发,需项目正确安装 husky、生成 .husky/ 目录,并确保 lint-staged 配置匹配文件类型与工具链。

husky 和 lint-staged 不是 WebStorm 的内置功能,它们运行在 Node.js 环境中,WebStorm 只负责调用 Git 命令(比如 git commit),而钩子实际由 Git + husky 触发。所以配置核心不在 IDE 设置里,而在项目工程本身。
WebStorm 会自动识别并执行已安装的 husky 钩子,前提是项目已正确初始化 husky 且 .git/hooks 下有对应脚本。
确认 husky 是否真正生效
很多问题其实卡在这一步:看起来装了,但 git commit 时没反应。常见原因:
-
husky install没运行,或运行失败(比如项目没初始化git init) - Node 版本太低或太高,导致 husky 安装跳过钩子注册(终端会输出
Skipping Git hooks installation) -
package.json中缺少"prepare": "husky install",或手动运行了npx husky install却没生成.husky/目录 - WebStorm 使用了内置 Git,但该 Git 未加载系统环境变量(尤其是 PATH 中的 Node/npm)——可在
Settings > Version Control > Git > Path to Git executable改为绝对路径(如/usr/local/bin/git或C:\Program Files\Git\bin\git.exe)
lint-staged 配置必须匹配文件扩展名和工具链
如果你的 lint-staged 配置里写了 "*.js",但项目用的是 TypeScript,那 .ts 文件根本不会被处理。同样,prettier --write 对 .vue 文件默认不生效,除非你装了 prettier-plugin-vue 并在 .prettierrc 中启用。
典型易错点:
- 忘记在
lint-staged配置中包含.ts、.tsx、.vue等实际用到的扩展名 - 用了
eslint --fix,但项目没装eslint-config-prettier,导致规则冲突,--fix失败后整个 pre-commit 中断 - 升级到
lint-staged v15+后仍保留"git add"命令——v10 起已自动暂存修改,加了反而报 warning 或重复添加 -
lint-staged脚本返回非零退出码(比如 ESLint 报 error 且没配--quiet),导致提交被拦住,但 WebStorm 的 Commit 对话框里只显示 “Commit failed”,不显示具体错误
在 WebStorm 提交时看到错误,怎么快速定位?
WebStorm 的 Git 提交窗口默认隐藏命令行输出。要看到真实日志,得手动触发一次终端提交:
- 打开 WebStorm 终端(
Alt+F12),执行git commit -m "test" - 如果失败,完整错误会打印出来,比如
Cannot find module 'prettier'(说明本地没装 prettier,或没用--save-dev)、或ESLint couldn't find the config "prettier" - 检查
node_modules/.bin/下是否存在对应二进制(ls node_modules/.bin | grep -E "(prettier|eslint|lint-staged)") - 确认当前终端工作目录就是项目根目录(不是子包目录),否则
package.json配置不生效
最常被忽略的一点:husky 的钩子依赖于 .git 目录下的可执行脚本,而这些脚本由 npx husky install 生成。一旦你删了 .husky 目录或重装 node_modules,就必须重新运行它——WebStorm 不会替你做这件事。











