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

配置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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:01:10