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

Husky预提交钩子执行lint报错:如何仅输出报告不阻止提交?

解决Husky pre-commit钩子中lint命令阻止提交的问题

方案1:修改pre-commit钩子文件

直接在npm run lint命令后添加|| true,强制让该命令的退出码为0,这样不管lint是否检测到错误/警告,钩子都会正常结束,不会阻止提交。

修改后的pre-commit文件内容:

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

echo 📝 Checking lint...

npx pretty-quick --staged
npm run lint || true

方案2:修改package.json中的lint命令

如果你希望在钩子中执行lint时始终返回成功,但保留手动执行npm run lint时的正常错误码,可以修改package.json里的lint命令,让整个lint流程结束后返回0:

修改后的package.json配置:

"lint": "(npm run lint:eslint && npm run lint:ts) || true",
"lint:eslint": "eslint src/ --ext .tsx,.ts",
"lint:ts": "tsc --noEmit"

这种方式下,pre-commit钩子可以保持原来的npm run lint命令不变,因为lint命令本身已经会返回0。

原理说明

Husky的pre-commit钩子会根据命令的退出码判断是否允许提交:如果命令返回非0值(比如eslint/tsc检测到错误时返回1),钩子就会终止并阻止提交。添加|| true后,不管前面的命令返回什么值,整个组合命令都会返回0(因为true命令的退出码是0),同时不会影响lint命令的错误/警告输出,满足你“获取报告但不阻止提交”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:50:35