Git提交时Husky未触发npx lint-staged问题求助
解决Husky Pre-Commit钩子不触发lint-staged的问题
问题现象
执行git commit时,Husky的pre-commit阶段未触发npx lint-staged,但手动运行npx lint-staged可正常检测代码问题。
排查与解决步骤
1. 修复pre-commit脚本的语法错误
你当前的.husky/pre-commit脚本中存在引号转义错误,导致无法正确加载husky的核心脚本。
错误代码:
#!/bin/sh . \"$(dirname \"$0\")/_/husky.sh\" npx lint-staged
将其修改为正确的无转义版本:
#!/bin/sh . "$(dirname "$0")/_/husky.sh" npx lint-staged
解释:Shell脚本中双引号无需转义,转义会导致路径解析失败,husky无法初始化,钩子自然不执行。
2. 确保钩子脚本有可执行权限
Git要求钩子脚本必须具备可执行权限才能运行,执行以下命令添加权限:
chmod +x .husky/pre-commit
3. 重新初始化Husky(可选,若上述步骤无效)
如果之前Husky安装不彻底,可重新安装并生成钩子:
# 卸载现有husky pnpm remove husky # 重新安装开发依赖 pnpm add -D husky # 执行prepare脚本初始化husky pnpm run prepare # 重新生成pre-commit钩子 npx husky add .husky/pre-commit "npx lint-staged"
4. 验证修复
故意修改一个tsx文件(比如添加未使用的变量),执行git add .后再运行git commit,此时应该能触发lint-staged的代码检查,拦截不符合规范的提交。
内容的提问来源于stack exchange,提问作者Lxbster
相关产品推荐
相关产品推荐

