我目前正在创建自定义脚本来运行commitizen commit命令,npm run commit
但我想让它git commit
以npm run commit
某种方式覆盖默认值.....所以任何人git commit
都会自动将人引导到commitizen界面并忽略该人之后放置的任何内容git commit
当 commitizen 可用时。
我怎样才能做到这一点?我谷歌了,找不到可行的解决方案。
谢谢
我目前正在创建自定义脚本来运行commitizen commit命令,npm run commit
但我想让它git commit
以npm run commit
某种方式覆盖默认值.....所以任何人git commit
都会自动将人引导到commitizen界面并忽略该人之后放置的任何内容git commit
当 commitizen 可用时。
我怎样才能做到这一点?我谷歌了,找不到可行的解决方案。
谢谢
无法通过 git 本身覆盖默认的 git 命令,但您可以将以下内容放入您的.bashrc
:
function git() {
case $* in
commit* ) npm run commit ;; # or yarn commit
* ) command git "$@" ;;
esac
}
如果第二个参数是“commit”,这将覆盖 git 命令,如果不是,则使用普通的 git 命令。(command
确保我们不会递归地使用我们的函数——它将直接转到 git 可执行文件,而不是返回到我们定义的函数。)
有关更多信息,请参见此处的答案。
请注意commitizen 文档中的警告:
注意:如果由于 husky 之类的原因而使用 precommit 钩子,则需要将脚本命名为“commit”以外的其他名称(例如“cm”:“git-cz”)。原因是 npm-scripts 有一个“功能”,它会自动运行名称为 prexxx 的脚本,其中 xxx 是另一个脚本的名称。本质上,如果您将脚本命名为“commit”,npm 和 husky 将运行“precommit”脚本两次,而解决方法是防止 npm 触发的 precommit 脚本。
我建议yarn cz
/npm run cz
代替。