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

Commitizen配合husky配置时用package.json自定义脚本提交触发pre-commit钩子两次怎么办

解决方案

有两个经测试可行的临时修复方案:

  • 修改package.json中的cz脚本配置,添加--disable-hook参数,修改后配置为:
    "scripts": {
      "cz": "cz --disable-hook",
      // 其余脚本保持不变
    }
    
    该参数会禁用commitizen内部的钩子自动调用逻辑,避免重复触发husky的提交钩子导致两次提交。
  • 无需通过package.json脚本调用,全局安装commitizen后直接执行git cz命令提交,和原生git commit逻辑一致,不会出现重复提交问题。

问题背景参考

我在配置Commitizen配合husky使用时遇到提交触发两次的问题:通过package.json中的自定义脚本执行提交操作时会触发两次提交,但直接运行git commit命令不存在该问题。

package.json完整配置

{
  "scripts": {
    "cz": "cz",
    "dev": "nodemon --watch '**/*.ts' --exec 'ts-node' src/server.ts",
    "lint": "eslint . --ext .ts",
    "lint-and-format": "eslint . --ext .ts --fix",
    "prettier-format": "prettier --config .prettierrc 'src/**/*.ts' --write",
    "test": "echo \"Error: no test specified\" && exit 1",
    "prepare": "husky install",
    "build": "tsc",
    "start": "NODE_ENV=production yarn build && node dist/server.js"
  },
  "lint-staged": {
    "src/**/*.ts": [
      "yarn prettier-format",
      "yarn lint-and-format"
    ],
    "*.ts": "eslint --cache --fix"
  },
  "config": {
    "commitizen": {
      "path": "cz-conventional-changelog"
    }
  },
  "dependencies": {
    "express": "^4.17.1"
  },
  "devDependencies": {
    "@types/express": "^4.17.13",
    "@typescript-eslint/eslint-plugin": "^4.29.1",
    "@typescript-eslint/parser": "^4.29.1",
    "commitizen": "^4.2.4",
    "cz-conventional-changelog": "^3.3.0",
    "dotenv": "^10.0.0",
    "eslint": "^7.32.0",
    "eslint-config-prettier": "^8.3.0",
    "eslint-plugin-prettier": "^3.4.0",
    "lint-staged": ">=10",
    "nodemon": "^2.0.12",
    "prettier": "^2.3.2",
    "ts-node": "^10.2.0",
    "typescript": "^4.3.5",
    "husky": ">=6"
  }
}

Husky钩子配置

Husky钩子配置


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:42:00