我当前正在创建自定义脚本来通过执行npm run commit
来运行Commitizen Commit命令,但我只想让它通过npm run commit
乘坐默认的git commit
,以某种方式.....所以任何人都会做git commit
自动将人定向到犯罪仪界面,并忽略git commit
后在codizen可用时放置的任何人。
我该怎么做?我做了Google,找不到可行的解决方案。
谢谢
不可能通过git本身覆盖默认的git命令,但是您可以将以下内容放入.bashrc
:
function git() {
case $* in
commit* ) npm run commit ;; # or yarn commit
* ) command git "$@" ;;
esac
}
如果第二个参数为" commit",则将覆盖git命令,如果不是,则使用普通的git命令。(command
确保我们不递归使用我们的功能 - 它将直接转到GIT可执行文件,而不是回到我们定义的函数。)
有关更多信息,请参见此处。
请注意"委员会文档"中的警告:
注意:如果您使用的是诸如Husky之类的东西,您将需要将脚本命名,除了"提交"(例如" CM":" Git-cz")。原因是因为NPM-Scripts具有一个"功能",其中它自动运行脚本,其中XXX是另一个脚本的名称,其中XXX是另一个脚本的名称。本质上,如果您将脚本命名为" commit",则NPM和Husky将两次运行" PROCMIT"脚本,而周围的工作是防止NPM触发的Precompit脚本。
我会推荐yarn cz
/npm run cz
。
这实际上是可能的。根据官方文档,这是可以使用Husky
实现的"husky": {
"hooks": {
"prepare-commit-msg": "exec < /dev/tty && git cz --hook || true",
}
}
这也有相同文档的一部分:)