Introduction
Husky est un outil complet et facile à utiliser spécialisé pour les git hooks
Comment l’utiliser
Les commandes sont lancées avec
Git Bash
À la racine de votre projet, lancer ce qui suit,
Il est très important de lancer la commande en utilisant le --save-dev
pour seulement installer les packages suivant en mode développement. C’est important pour des raisons d’optimisation et de sécurité.
npm install --save-dev husky
Ensuite pour activer les git hooks
npx husky install
Configurer Husky
Votre package.json
doit avoir ces nouvelles lignes:
{
"devDependencies": {
"husky": "^6.0.0",
"lint-staged": "^10.5.4",
"lerna": "^3.22.1"
},
"scripts": {
"prepare": "husky install",
"pre-commit": "lint-staged",
"pre-push": "lerna run --parallel --since origin/develop test"
},
"lint-staged": {
"packages/**/*.js": "eslint"
}
}
Dans cet exemple,
eslint
est installé globalement.
Vous pouvez obtenir ce résultat avec cette commande : npm set-script prepare "husky install"
Ajouter des git hooks
Puis vous devez créer les fichiers dans le répertoire de .husky/
commit-lint
Avec le CLI : npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'
Manuellement :
Créer un fichier nommé .husky/commit-msg
:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install commitlint --edit $1
pre-commit
Avec le CLI : npx husky add .husky/pre-commit "npm run pre-commit"
Manuellement :
Créer un fichier nommé .husky/pre-commit
:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npm run pre-commit
pre-push
Avec le CLI : npx husky add .husky/pre-push "npm run pre-push"
Manuellement :
Créer un fichier nommé .husky/pre-push
:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npm run pre-push
Structure
.husky/
_/
.gitignore
commit-msg
pre-commit
pre-push
commitlint.config.js
package.json
lerna.json
license.txt
README.md
Donc à partir de maintenant, les actions commit-msg
, pre-commit
and pre-push
possèdent des hooks.
Comment ignorer les hooks
Vous pouvez tout simplement ajouter --no-verify
à votre commande git.
par exemple,
git push origin feature/abc-123 --no-verify
git commit -m "fix: removed invalid code" --no-verify
Conclusion
Voir les articles suivants pour plus d’information:
- Lerna (automatiser et simplifier la gestion des monorepos)
- Lint-staged (Lancer eslint lors du commit)
- Commit-lint (standardiser les messages des commit)