Всякий раз, когда мы пишем javascript, машинописное приложение или работаем в команде разработчиков, мы хотим, чтобы наш код был чистым, отформатированным, пригодным для сборки или любым другим действием, которое мы хотим выполнить до того, как код будет зафиксирован и отправлен, Husky и Git Hooks вам помогут.
С помощью хуков Husky и Git мы можем запускать определенные команды и сценарии во время фиксации, отправляя исходный код в репо.
Что такое Git-хуки?
Перехватчики Git — это скрипты, которые Git выполняет до или после таких событий, как фиксация, отправка и получение. Перехватчики Git — это встроенная функция, ничего скачивать не нужно. Перехватчики Git запускаются локально.
Git предоставляет различные хуки. некоторые из них
- applypatch-msg
- предварительно применить исправление
- после применения исправления
- предварительно зафиксировать
- подготовить-фиксировать-сообщение
- зафиксировать-сообщение
- после фиксации
- предварительно перебазировать
- после оформления заказа
- после слияния
- предварительно получить
- обновить
- после получения
- после обновления
- предавтоматический gc
- после перезаписи
- предварительная отправка
Таким образом, мы можем использовать эти триггеры и использовать хаски для выполнения какой-либо задачи в нашем проекте.
Чтобы установить хаски в свой проект, вам нужно выполнить команду ниже npm
npm install husky --save-dev Or yarn add husky
он добавит хаски в раздел devDependencies файла package.json, а затем мы должны добавить раздел хаски и указать, какое действие мы хотим выполнить.
// package.json "scripts": { "lint": "run-p --print-label lint-eslint lint-markdown", "lint-eslint": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./", "lint-markdown": "markdownlint --ignore coverage --ignore dist --ignore examples --ignore node_modules **/*.md .**/**/*.md", "test": "react-scripts test", "test--coverage": "yarn run test -- --coverage", "typecheck": "tsc --noEmit", "validate": "run-p --print-label lint typecheck test build", }, { "husky": { "hooks": { "pre-commit": "lint", "pre-push": "test", "...": "..." } } }
Существующие крючки сохраняются. Требуется Node >= 10
и Git >= 2.13.0
.
git commit -m 'Keep calm and commit'
Когда git commit выполняется, скрипт lint будет выполнен, а es-lint и lint-markdown будут запущены в вашем исходном коде.
Когда git push будет выполнен, будет выполнен тест.
Начиная с 1.0.0
, хаски можно настроить с помощью файла .huskyrc
, .huskyrc.json
или .huskyrc.js
.
// .huskyrc { "hooks": { "pre-commit": "npm test" } }
Поддерживаемые крючки
Husky поддерживает все хуки Git, определенные здесь. Перехватчики на стороне сервера (pre-receive
, update
и post-receive
) не поддерживаются.
Таким образом, используя Husky и git hooks, мы можем получить более красивый, безошибочный, сборочный код.