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

Husky npm包Pre-Commit钩子在子目录仓库中无法正常工作

解决子目录中Husky + ESLint Pre-Commit钩子失效问题

1. 配置Git钩子路径

由于.git在项目根目录,而Husky位于react-client子目录,需要让Git明确钩子脚本的位置。在项目根目录执行:

git config core.hooksPath react-client/.husky

这条命令会让Git默认去react-client/.husky目录查找钩子文件。

2. 修正pre-commit脚本内容

打开react-client/.husky/pre-commit文件,替换原有内容为:

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

npm run lint
  • 无需额外cd react-client,因为钩子本身就在子目录环境下执行
  • 确保package.json中的lint脚本正确指向ESLint检查,比如:
    "scripts": {
      "lint": "eslint . --ext .js,.jsx,.ts,.tsx"
    }
    

3. 确认Husky初始化状态

在react-client目录下,确保已完成Husky初始化:

npx husky install

如果是通过命令添加的钩子,执行:

npx husky add .husky/pre-commit "npm run lint"

这会自动生成正确的钩子文件结构。

4. 修复权限问题

确保pre-commit文件有可执行权限,在项目根目录执行:

chmod +x react-client/.husky/pre-commit

5. 测试钩子有效性

在react-client目录下创建一个包含ESLint错误的文件,尝试提交:

git add . && git commit -m "test pre-commit hook"

若钩子生效,会直接抛出ESLint错误并阻止提交。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:14:37