配置husky pre-commit钩子未触发问题求助
Husky pre-commit钩子未触发问题排查
问题描述
配置husky已有一段时间,但pre-commit钩子始终未触发。执行commit操作时钩子完全没被调用,且无任何输出内容。相关环境与配置信息如下:
package.json内容
{ "name": "frontend", "version": "0.1.0", "private": true, "dependencies": { "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", "@types/jest": "^27.5.2", "@types/node": "^16.11.68", "@types/react": "^18.0.21", "@types/react-dom": "^18.0.6", "eslint-config-airbnb-typescript": "^17.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", "typescript": "^4.8.4", "web-vitals": "^2.1.4" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", "lint": "eslint .", "lint:fix": "eslint --fix .", "prepare": "husky install" }, "eslintConfig": { "extends": [ "react-app", "react-app/jest" ] }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.40.1", "@typescript-eslint/parser": "^5.40.1", "eslint": "^8.25.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-jsx-a11y": "^6.6.1", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.31.10", "eslint-plugin-react-hooks": "^4.6.0", "husky": "^8.0.0", "prettier": "^2.7.1" } }
pre-commit文件内容
#!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" npm test
Git版本
git version 2.37.0 (Apple Git-136)
排查修复步骤
重新安装husky
执行npm run prepare,确保项目根目录下存在.husky文件夹,且内部包含_子文件夹与pre-commit文件。检查脚本可执行权限
在macOS/Linux环境中,执行chmod +x .husky/pre-commit赋予脚本可执行权限;Windows环境需确保文件换行符为LF格式(避免CRLF导致脚本执行失败)。确认Git钩子路径
执行git config core.hooksPath,若输出不是.husky,则手动设置:git config core.hooksPath .husky。单独测试钩子脚本
直接在终端运行.husky/pre-commit,查看是否有输出或报错。如果npm test在测试全部通过时无输出,可临时修改pre-commit脚本添加echo "Pre-commit hook triggered",再尝试commit验证是否触发。检查是否跳过钩子
确认commit时未使用--no-verify参数,该参数会强制跳过所有Git钩子。升级husky版本
当前使用的husky 8.0.0可能存在兼容问题,尝试升级到最新稳定版:npm install husky@latest --save-dev,之后重新执行npm run prepare。
内容的提问来源于stack exchange,提问作者Carlos Damian Perez
相关产品推荐
相关产品推荐

