Как сделать 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",
  }
}

Есть несколько проблем с этой частью тех же документов:)

Другие вопросы по тегам