Всякий раз, когда мы пишем javascript, машинописное приложение или работаем в команде разработчиков, мы хотим, чтобы наш код был чистым, отформатированным, пригодным для сборки или любым другим действием, которое мы хотим выполнить до того, как код будет зафиксирован и отправлен, Husky и Git Hooks вам помогут.

С помощью хуков Husky и Git мы можем запускать определенные команды и сценарии во время фиксации, отправляя исходный код в репо.

Что такое Git-хуки?

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

Git предоставляет различные хуки. некоторые из них

Таким образом, мы можем использовать эти триггеры и использовать хаски для выполнения какой-либо задачи в нашем проекте.

Чтобы установить хаски в свой проект, вам нужно выполнить команду ниже 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, мы можем получить более красивый, безошибочный, сборочный код.