На главную
Контейнеры и CI/CD
Хуки pre-commit
Собирает husky и lint-staged: какие проверки вешать на коммит, чем их запускать и что выполнить один раз при установке.
Что проверять
Установка: выполнить один раз
npm install -D husky lint-staged eslint prettier npx husky init printf '%s\n' 'npx --no-install lint-staged' > .husky/pre-commit
pre-commit
#!/usr/bin/env sh npx --no-install lint-staged
lint-staged
{
"*.{js,jsx,ts,tsx,vue}": [
"npx --no-install eslint --fix --max-warnings=0"
],
"*.{js,jsx,ts,tsx,vue,css,scss,json,md,yml,yaml}": [
"npx --no-install prettier --write"
]
}
Как это работает
- · husky кладёт хуки в каталог .husky и прописывает его в core.hooksPath — поэтому хуки уезжают в репозиторий вместе с кодом.
- · lint-staged запускает проверку только по файлам в индексе. Автоправки (--fix, --write) он сам добавляет обратно в коммит.
- · Проверки на весь проект (типы, поиск секретов) в lint-staged не помещаются: они стоят в хуке отдельной строкой.
- · Хук — не замена CI: его можно обойти флагом --no-verify. Он экономит минуты ожидания, а не заменяет проверку на сервере.