feat: Husky pre-push хуки с проверками качества кода
- Добавлен Husky 9 с pre-push хуком - Проверки: type-check, lint, lint:styles, build:prod - Новые скрипты: build:prod, build:dev с env переменными - Обновлен dev скрипт для использования env переменных - Добавлена документация (.husky/README.md, HUSKY_SETUP.md) - Обновлен .gitignore для включения .husky/
This commit is contained in:
89
.husky/README.md
Normal file
89
.husky/README.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# Husky Git Hooks
|
||||
|
||||
## Описание
|
||||
|
||||
Husky используется для автоматического запуска проверок перед выполнением git операций.
|
||||
|
||||
## Настроенные хуки
|
||||
|
||||
### pre-push
|
||||
|
||||
Запускается автоматически перед `git push` и выполняет следующие проверки:
|
||||
|
||||
1. **Проверка типов TypeScript** (`pnpm type-check`)
|
||||
- Проверяет корректность типов во всех TypeScript файлах
|
||||
- Использует `tsc --noEmit` (компиляция без генерации файлов)
|
||||
|
||||
2. **Проверка ESLint** (`pnpm lint`)
|
||||
- Проверяет качество кода JavaScript/TypeScript
|
||||
- Проверяет соблюдение правил для React, Hooks, доступности
|
||||
|
||||
3. **Проверка Stylelint** (`pnpm lint:styles`)
|
||||
- Проверяет качество CSS/SCSS кода
|
||||
- Проверяет порядок свойств и селекторов
|
||||
|
||||
4. **Production сборка** (`pnpm build:prod`)
|
||||
- Проверяет, что проект успешно собирается для production
|
||||
- Гарантирует отсутствие ошибок сборки перед push
|
||||
|
||||
## Установка
|
||||
|
||||
После клонирования репозитория выполните:
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
Husky автоматически установится благодаря скрипту `prepare` в package.json.
|
||||
|
||||
## Пропуск проверок (не рекомендуется)
|
||||
|
||||
Если необходимо пропустить проверки (например, для срочного фикса):
|
||||
|
||||
```bash
|
||||
git push --no-verify
|
||||
```
|
||||
|
||||
**Внимание:** Используйте эту опцию только в крайних случаях!
|
||||
|
||||
## Ручной запуск проверок
|
||||
|
||||
Вы можете запустить все проверки вручную:
|
||||
|
||||
```bash
|
||||
pnpm pre-push
|
||||
```
|
||||
|
||||
Или по отдельности:
|
||||
|
||||
```bash
|
||||
pnpm type-check # Проверка типов
|
||||
pnpm lint # Проверка ESLint
|
||||
pnpm lint:styles # Проверка Stylelint
|
||||
```
|
||||
|
||||
## Исправление ошибок
|
||||
|
||||
### Автоматическое исправление ESLint
|
||||
|
||||
```bash
|
||||
pnpm lint --fix
|
||||
```
|
||||
|
||||
### Автоматическое исправление Stylelint
|
||||
|
||||
```bash
|
||||
pnpm lint:styles --fix
|
||||
```
|
||||
|
||||
## Отключение хуков
|
||||
|
||||
Если нужно временно отключить хуки:
|
||||
|
||||
```bash
|
||||
# Удалить хуки
|
||||
rm -rf .husky
|
||||
|
||||
# Восстановить хуки
|
||||
pnpm prepare
|
||||
```
|
||||
18
.husky/pre-push
Normal file
18
.husky/pre-push
Normal file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env sh
|
||||
. "$(dirname -- "$0")/_/husky.sh"
|
||||
|
||||
echo "Запуск проверок перед push..."
|
||||
|
||||
echo "Проверка типов TypeScript..."
|
||||
pnpm type-check || exit 1
|
||||
|
||||
echo "Проверка ESLint..."
|
||||
pnpm lint || exit 1
|
||||
|
||||
echo "Проверка Stylelint..."
|
||||
pnpm lint:styles || exit 1
|
||||
|
||||
echo "Production сборка..."
|
||||
pnpm build:prod || exit 1
|
||||
|
||||
echo "Все проверки пройдены успешно!"
|
||||
Reference in New Issue
Block a user