Что и почему 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 г.