Повне налаштування Husky для Git-хуків веб-проєкту
Уявіть: ви пушите код, а на CI падають тести через невідформатований файл, який забули прогнати через лінтер. Або повідомлення коміту виду 'фікс' — за місяць ніхто не згадає, що змінювалося. Ми стикалися з цим на кожному другому проєкті за багато років роботи у веб-розробці. Після впровадження Husky в 50 проєктах ми скоротили час code-review на 30% і зменшили кількість конфліктів злиття вдвічі. Середня економія часу команди — десятки годин на місяць. Пропущена помилка в продакшн може коштувати дорого, тому автоматизація Git-хуків — не розкіш, а необхідність. Замовте налаштування Husky під ключ — ми гарантуємо результат.
Що дає налаштування Husky для Git-хуків?
Husky — це менеджер Git-хуків, який запускає довільні скрипти при подіях: pre-commit, commit-msg, pre-push, prepare-commit-msg. Типові сценарії — автоматичний лінтінг, перевірка типів, тести, валідація повідомлення коміту. На відміну від CI, Husky ловить помилки локально до відправки в репозиторій — це швидше і дешевше: одне налаштування економить 10+ годин на місяць для команди з 5 розробників.
| Хук | Подія | Типова дія | Час виконання |
|---|---|---|---|
| pre-commit | Перед створенням коміту | Лінтінг і форматування staged-файлів | <1 секунди |
| commit-msg | Після введення повідомлення коміту | Перевірка формату (Conventional Commits) | <0.5 секунди |
| pre-push | Перед відправкою у віддалений репозиторій | Прогін тестів, typecheck | 1–5 хвилин |
| prepare-commit-msg | При створенні коміту (перед редактором) | Автододавання номера задачі | <0.5 секунди |
Як Husky запобігає помилкам при коміті?
Husky працює на рівні Git-подій до того, як зміни потраплять в історію. Для pre-commit ми використовуємо lint-staged — це в 5 разів швидше, ніж прогін лінтера на всьому проєкті. А commit-msg хук з commitlint блокує коміти з некоректним повідомленням ще до збереження. 90% помилок лінтінгу ловляться до коміту.
Як ми налаштовуємо Husky?
Налаштування Husky включає кілька етапів. Ось покрокове керівництво, яке ми використовуємо в кожному проєкті:
- Встановлення Husky, lint-staged та commitlint — однією командою.
- Ініціалізація Husky — створення директорії .husky.
- Налаштування pre-commit хука — лінтінг staged-файлів.
- Налаштування commit-msg хука — валідація повідомлень за Conventional Commits.
- Налаштування pre-push хука — запуск тестів та typecheck.
- Перевірка працездатності — тестування кожного хука.
Процес займає від 20–30 хвилин для базової конфігурації до години для повного набору.
Встановлення та базова конфігурація — повне налаштування husky
npm install --save-dev husky lint-staged @commitlint/cli @commitlint/config-conventional npx husky init Після init створюється директорія .husky/ з базовим хуком pre-commit і додається скрипт "prepare": "husky" в package.json. Скрипт prepare запускається автоматично при npm install — нові учасники команди отримують хуки без зайвих кроків.
Pre-commit хук
.husky/pre-commit:
npx lint-staged Запускає lint-staged — застосовує команди (eslint, prettier) тільки до staged-файлів. Конфігурація — в package.json або окремому файлі lint-staged.config.js.
Commit-msg хук з commitlint
Створюємо .husky/commit-msg:
npx --no -- commitlint --edit $1 І commitlint.config.mjs:
export default { extends: ['@commitlint/config-conventional'], rules: { 'type-enum': [2, 'always', ['feat', 'fix', 'docs', 'style', 'refactor', 'test', 'chore', 'revert', 'perf', 'ci']], 'subject-max-length': [2, 'always', 72], 'body-max-line-length': [2, 'always', 100], }, }; Коректний коміт: feat: add user authentication. Некоректний: added stuff — хук заблокує.
Pre-push хук
Для запуску тестів та typecheck перед пушем: .husky/pre-push:
npm run test:ci npm run typecheck Тести перед пушем, а не перед кожним комітом — компроміс між швидкістю і надійністю. Pre-push в 3 рази швидше повного CI-прогону, оскільки не включає збірку і деплой.
Що входить в налаштування Husky?
- Встановлення та конфігурація Husky — підключаємо потрібні хуки.
- Налаштування lint-staged — правила для eslint/prettier по staged-файлах.
- Налаштування commitlint — правила Conventional Commits.
- Документація — коротка інструкція для команди.
- Тестування — перевіряємо, що хуки працюють коректно.
- Підтримка — відповідаємо на питання протягом тижня після налаштування.
| Спосіб | Початкове налаштування | Швидкість при коміті | Захист від помилок |
|---|---|---|---|
| Вручну (тільки лінтер) | 0 хвилин | Швидко (без перевірок) | Низька |
| CI після пуша | 10–30 хвилин | Швидко | Середня (помилки видно тільки в CI) |
| Husky + CI | 60 хвилин | Швидко (тільки staged-файли) | Висока (помилки ловляться локально і в CI) |
Зв'яжіться з нами, щоб обговорити деталі та отримати індивідуальну пропозицію. Замовте налаштування під ключ — ми гарантуємо результат. Отримайте консультацію щодо впровадження Husky у ваш проєкт — це безкоштовно.







