Husky и pre-commit hooks
Автоматический запуск линтеров и тестов перед каждым коммитом через Git hooks.
Зачем нужно
- Не пропускать плохой код в репозиторий
- Автоматизация: линт + формат + тесты при каждом commit/push
- lint-staged проверяет только изменённые файлы (быстро)
Где используется
- Любой командный проект с Git
Установка
npm i -D husky lint-staged
npx husky init
Это создаст .husky/pre-commit и добавит prepare скрипт в package.json.
Конфигурация
package.json:
{
"scripts": {
"prepare": "husky"
},
"lint-staged": {
"*.{js,ts,tsx}": ["eslint --fix", "prettier --write"],
"*.{css,scss}": ["stylelint --fix", "prettier --write"],
"*.md": ["prettier --write"]
}
}
.husky/pre-commit:
npx lint-staged
Другие hooks
.husky/commit-msg (проверка формата коммита):
npx --no -- commitlint --edit $1
npm i -D @commitlint/cli @commitlint/config-conventional
commitlint.config.js:
export default { extends: ['@commitlint/config-conventional'] };
Как это работает
git commitзапускает.husky/pre-commitlint-stagedберёт только staged файлы- Запускает ESLint, Prettier, Stylelint на них
- Если ошибка -- коммит отменяется