Как сделать commitizen переопределить команду git commit по умолчанию
В настоящее время я создаю собственный скрипт для запуска команды commitizen commit, выполнив npm run commit
но я хочу просто позволить ему перескочить по умолчанию git commit
с npm run commit
как-то..... так кто-нибудь делает git commit
автоматически направит человека к интерфейсу commitizen и проигнорирует все, что человек поставил после git commit
когда коммитизен доступен.
Как я могу это сделать? Я сделал Google, не могу найти жизнеспособное решение.
Спасибо
1 ответ
Невозможно переопределить команду git по умолчанию через сам git, но вы можете поместить следующее в ваш .bashrc
:
function git() {
case $* in
commit* ) npm run commit ;; # or yarn commit
* ) command git "$@" ;;
esac
}
Это переопределит команду git, если вторым аргументом является "commit", и использует обычную команду git, если нет. (The command
гарантирует, что мы не будем использовать нашу функцию рекурсивно - она будет идти непосредственно к исполняемому файлу git, а не к нашей определенной функции.)
Смотрите здесь этот ответ для получения дополнительной информации.
Обратите внимание на предупреждение в документах для комитетов:
ПРИМЕЧАНИЕ: если вы используете хуки precommit благодаря чему-то вроде лайки, вам нужно будет назвать свой скрипт чем-то, кроме "commit" (например, "cm": "git-cz"). Причина в том, что npm-scripts имеет "функцию", при которой он автоматически запускает сценарии с именем prexxx, где xxx - это имя другого сценария. По сути, npm и husky запускают сценарии "precommit" дважды, если вы называете сценарий "commit", и обходной путь заключается в предотвращении запускаемого сценарием npm сценария precommit.
Я бы порекомендовал yarn cz
/npm run cz
вместо.
На самом деле это возможно. Согласно официальным документам, это возможно с помощью хаски.
"husky": {
"hooks": {
"prepare-commit-msg": "exec < /dev/tty && git cz --hook || true",
}
}
Есть несколько проблем с этой частью тех же документов:)