我正在创建自定义脚本以执行npm run commit
运行commitizen commit命令,但我想让它以git commit
以某种方式使用默认npm run commit
.....所以git commit
任何人都会自动将此人引导至提交界面,并忽略此人在git commit
提交任何内容后放置的内容。
我该怎么做?我做谷歌,无法找到可行的解决方案。
由于
答案 0 :(得分:2)
无法通过git本身覆盖默认的git命令,但您可以将以下内容放在.bashrc
中:
function git() {
case $* in
commit* ) npm run commit ;; # or yarn commit
* ) command git "$@" ;;
esac
}
如果第二个参数是“commit”,这将覆盖git命令,如果不是,则使用普通的git命令。 (command
确保我们不会递归地使用我们的函数 - 它将直接转到git可执行文件,而不是返回到我们定义的函数。)
有关详细信息,请参阅此处this answer。
请注意commitizen docs中的警告:
注意:如果你使用像哈士奇这样的预先挂钩,你需要为脚本命名除“commit”之外的其他东西(例如“cm”:“git-cz”)。原因是因为npm-scripts有一个“功能”,它自动运行名称为prexxx的脚本,其中xxx是另一个脚本的名称。实质上,如果您将脚本命名为“commit”,则npm和husky将运行两次“precommit”脚本,并且解决方法是阻止npm触发的precommit脚本。
我建议改为yarn cz
/ npm run cz
。
答案 1 :(得分:0)
这实际上是可能的。根据{{3}},这可以使用official docs
实现"husky": {
"hooks": {
"prepare-commit-msg": "exec < /dev/tty && git cz --hook || true",
}
}
在同一文档中也有一些陷阱:)