![44 миллиона скачиваний в месяц 44 миллиона скачиваний в месяц](https://habrastorage.org/getpro/habr/upload_files/f67/63b/59f/f6763b59fdd2270962ae87d8c265a45c.png)
В git давно есть нативные хуки, на которые можно повесить произвольные скрипты (например, для линтинга). Они изначально уже присутствуют в любом репозитории в виде исполняемых файлов, можно посмотреть на них, если зайти в .git/hooks
![это все доступные хуки, они сразу начнут работать если убрать постфикс .sample это все доступные хуки, они сразу начнут работать если убрать постфикс .sample](https://habrastorage.org/getpro/habr/upload_files/96a/357/b64/96a357b64941d8113b5d40fd8a8d2e0e.png)
Давайте настроим свой pre-commit хук, но будем хранить его в репозитории, чтобы он шарился. Заведем директорию, например .git-hooks
, и пусть она будет в корне репозитория. Добавляем в нее файлик с именем pre-commit
, делаем ему chmod +x
, пишем в него все что нужно сделать:
#!/bin/sh
touch PreCommitHookRan
Теперь, чтобы у всех контрибьюторов git знал где хранятся файлы-хуки, делаем такой npm-скрипт:
...
"prepare": "git config core.hooksPath .git-hooks || echo 'Not in a git repo'",
...
Это всё. Буквально. Готово.
Вы спросите, и что же особенного тогда делает husky?
![? ?](https://habrastorage.org/getpro/habr/upload_files/9c3/fc4/0c6/9c3fc40c630bc01c881cc8ee7f21c8dd.png)
![? ?](https://habrastorage.org/getpro/habr/upload_files/cf3/d0b/979/cf3d0b979c063a501c4ec8b09dca7250.png)
Ни-че-го.