Проверяет понимание инструмента Husky и механизма git-хуков для автоматизации проверок кода перед коммитом.
Git из коробки поддерживает хуки — специальные скрипты, которые лежат в папке .git/hooks и запускаются при определённых событиях: перед коммитом, перед пушем, после merge и так далее. Проблема в том, что эта папка не попадает в репозиторий, поэтому настроить одинаковые хуки для всей команды вручную неудобно. Husky решает эту задачу: он позволяет хранить хуки прямо в проекте и автоматически устанавливать их при npm install.
Husky добавляет в проект папку .husky, где лежат исполняемые скрипты. При установке пакета Husky прописывает в git-конфиг путь к этой папке, и Git начинает вызывать ваши скрипты вместо стандартных. Чаще всего используют хук pre-commit, который запускается перед созданием коммита. Если скрипт завершается с ненулевым кодом, коммит отменяется.
// package.json
{
"scripts": {
"prepare": "husky install"
},
"devDependencies": {
"husky": "^8.0.0",
"lint-staged": "^13.0.0"
}
}
// .husky/pre-commit
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npx lint-staged
Команда husky install в скрипте prepare гарантирует, что хуки установятся у каждого разработчика после npm install. Внутри pre-commit обычно вызывают lint-staged, который прогоняет линтер и форматтер только по изменённым файлам — это быстро и не мешает работе.
Важно помнить, что хуки можно обойти флагом git commit --no-verify, поэтому они не заменяют проверки на CI, а дополняют их. Также не стоит делать pre-commit слишком тяжёлым: если он занимает десятки секунд, разработчики начнут его отключать.
Итог: Husky стоит применять в любом командном проекте на Node.js, чтобы автоматически поддерживать единый стиль кода и ловить ошибки ещё до коммита, оставляя тяжёлые проверки для CI.
Уровень
Рейтинг:
4
Сложность:
3
Навыки
JavaScript
Git
Ключевые слова
Подпишись на Node.js Developer в телеграм