我目前正在创建自定义脚本来运行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代替。