На главную

Контейнеры и 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. Он экономит минуты ожидания, а не заменяет проверку на сервере.