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
相关产品推荐
相关产品推荐

