Коммиттинг как профессионал в NodeJs: Хуки


Зачем нужны крючки Git?

Git hooks — это скрипты, которые Git выполняет локально до или после таких событий, как commit, push и receive.

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

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

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

Как начать

Добавьте Husky

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

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

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
Войти в полноэкранный режим Выйти из полноэкранного режима

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

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

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

Добавить lint-staged

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

Lint Staged, похоже, решает эту проблему. Он позволяет вам запускать процесс против 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 .'],
};
Войти в полноэкранный режим Выйти из полноэкранного режима

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

Заключение

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

Оцените статью
devanswers.ru
Добавить комментарий