Commitizen配合husky配置时用package.json自定义脚本提交触发pre-commit钩子两次怎么办
解决方案
有两个经测试可行的临时修复方案:
- 修改
package.json中的cz脚本配置,添加--disable-hook参数,修改后配置为:
该参数会禁用commitizen内部的钩子自动调用逻辑,避免重复触发husky的提交钩子导致两次提交。"scripts": { "cz": "cz --disable-hook", // 其余脚本保持不变 } - 无需通过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钩子配置

内容的提问来源于stack exchange,提问作者Alien128
相关产品推荐
相关产品推荐

