You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Husky pre-commit钩子未触发,ESLint违规时仍可提交代码如何解决?

问题根因及解决方案

核心原因

  • 你使用的husky v7.0.1已完全废弃package.json中husky.hooks的配置方式,该写法仅适用于husky v4及更早版本,你当前写的钩子配置根本不会被husky读取生效
  • 手动重命名.git/hooks/pre-commit.sample的操作不符合husky v7的设计逻辑,husky v7默认使用项目根目录下.husky文件夹管理钩子,不会读取.git/hooks下的自定义钩子
  • 你手动创建的.git/hooks/pre-commit没有对应执行校验逻辑,自然不会拦截违规提交

修复步骤

  1. 首先执行初始化husky命令:
    npx husky install

  2. 给package.json的scripts新增prepare脚本,保证后续安装依赖时自动初始化husky:

"scripts": {
  "prepare": "husky install",
  "prettier-format": "prettier --config .prettierrc 'src/**/*.ts' 'test/**/*.ts' --write",
  "lint": "eslint . --ext .ts"
}
  1. 执行命令添加pre-commit钩子,自动生成对应配置文件:
    npx husky add .husky/pre-commit "npm run prettier-format && npm run lint"

  2. 可选优化:

    • 如果希望prettier格式化后的代码自动加入提交,可以修改.husky/pre-commit文件内容如下:
      npm run prettier-format
      git add .
      npm run lint
      
      也可以搭配lint-staged只处理暂存区文件,提升校验速度。
    • 如果需要eslint警告级别违规也拦截提交,可修改lint命令为:
      "lint": "eslint . --ext .ts --max-warnings 0"
  3. 清理冗余文件:删除你之前手动创建的.git/hooks/pre-commit,避免钩子冲突。

验证方式

故意编写不符合eslint规则的代码,执行git commit操作,此时会触发pre-commit钩子,eslint校验不通过时会返回非0退出码,自动阻止提交。

内容的提问来源于stack exchange,提问作者sage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 00:15:02