Что и почему Git перехватывает?

Перехватчики Git — это скрипты, которые Git выполняет локально до или после таких событий, как фиксация, отправка и получение.

Эти хуки полностью программируются с помощью сценариев bash. Примеры того, что можно сделать:

  • предварительная фиксация: соблюдение стандартов кодирования проекта.
  • pre-push: запуск тестов.

Это позволяет нам убедиться, что мы совершаем правильные действия в нужное время. Не ломать наш код только из-за умственной нагрузки, связанной с ручным процессом, о котором можно забыть.

Как начать

Добавить хаски

Husky — это инструмент, который позволяет использовать Git-хуки с помощью JavaScript, сконфигурированного с использованием отдельных файлов для хуков в каталоге .husky/.

Самый быстрый способ установить хаски — использовать husky-init, одноразовую команду для быстрой инициализации проекта с хаски:

npx husky-init && npm install       # npm
npx husky-init && yarn              # Yarn 1
yarn dlx husky-init --yarn2 && yarn # Yarn 2+
pnpm dlx husky-init && pnpm install # pnpm

Он настроит хаски, изменит package.json и создаст образец хука перед фиксацией, который вы можете отредактировать. По умолчанию он будет запускать тест при фиксации.

Чтобы добавить еще один хук, используйте husky add.

Если вам неудобно пользоваться husky-init, вы можете найти другие варианты здесь.

Добавить lint-staged

Husky очень полезен, но он изначально работает с git и не фокусирует команды в наших сценариях bash для всех файлов, а не только для тех, которые мы хотим зафиксировать.

Lint Staged решает эту проблему. Это позволяет вам запускать процесс с подготовленными файлами git, которые соответствуют шаблону.

Установите lint-staged, добавив его в свой локальный проект.

npm install lint-staged --save-dev 
yarn add lint-staged -D

В вашем package.json добавьте его как скрипт ("lint-staged": "lint-staged",) и направьте его через хук pre-commit. Если вы используете Husky, это можно найти в .husky/pre-commit со следующим содержанием:

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

yarn lint-staged

Существует несколько способов настроить lint-staged. Один из них имеет файл lint-staged.config.js в корневой папке вашего проекта. В этом файле вы можете указать, какой процесс вы хотите запустить для каких типов файлов. Например:

module.exports = {
  '*.{ts,tsx}': [() => 'yarn tsc:check', 'yarn format', 'yarn lint:fix', 'yarn test', 'git add .'],
};

Предыдущий фрагмент запускает проверку компилятора, форматирование, анализ и тестирование перед добавлением фиксированных промежуточных файлов в текущий коммит.

Заключение

С помощью этих двух инструментов мы теперь будем продвигать код, который будет проходить те же проверки, что и наша система CI/CD.

Первоначально опубликовано на https://dev.to 8 августа 2022 г.