L'Architecture en Microservices : Approfondissement et Schémas
Pourquoi passer d'un monolithe à une structure en microservice ?
L'outil Husky permet d'améliorer la qualité du code en ajoutant des hooks Git tels que pre-commit et pre-push.
L'outil Husky permet d'améliorer la qualité du code en ajoutant des hooks Git tels que pre-commit et pre-push. Ces hooks automatisent l'exécution de scripts à des étapes spécifiques du cycle de vie Git, comme vérifier la qualité du code ou lancer des tests avant de committer ou pusher les modifications.
Dans cet article, nous allons expliquer comment configurer et utiliser Husky pour mettre en place des hooks de pre-commit et pre-push, avec des exemples concrets de code.
Tout d'abord, installez Husky comme une dépendance de développement dans votre projet en utilisant npm ou yarn.
yarn add --dev husky
# Ajouter pinst uniquement si votre repo n'est pas privé
yarn add --dev pinst
Ensuite, il suffit de lancer
npx husky init
Vous constaterez qu'un dossier .husky a été ajouté à votre projet et à l'interieur un fichier pre-commit. Ouvrez ce fichier.
Il contient pour le moment seulement "npm". A vous de l'éditer pour y mettre n'importe quelle commande que vous souhaitez voire exécutée avant un commit.
De mon côté je mets juste un
yarn lint
ET VOILÀ !
Plus qu'à tester en faisant
git commit
La commande lint devrait se lancer automatiquement avant de commit.
Si vous souhaitez executer des commandes avant de push, il vous suffit de créer un fichier pre-push et d'y mettre ce que vous souhaitez.
Chez moi j'ai
yarn lint
yarn test
yarn type-check
# reject push if your branch is main or staging
branch=`git branch --show-current`
if [ "$branch" = "staging" ] || [ "$branch" = "main" ]
then
echo "You're trying to push on "${branch}"!\nIf this is intentional, then rerun you command and add --no-verify flag."
exit 1
fi
La deuxième partie du script empêche de pusher trop rapidement sur main (la prod) ou staging (en fonction de votre cas). Vous devrez pusher en utilisant --no-verify
Voici le contenu de mon package.json où sont renseignés mes scripts
"scripts": {
"type-check": "tsc --project tsconfig.json --pretty --noEmit",
"lint": "eslint --ext .ts,.tsx,.js,.jsx --fix .",
"test": "jest --passWithNoTests",
},
type-check
lint
test
Pourquoi relancer yarn lint au push si on le lance déjà au commit ?
Vous pouvez choisir de ne pas lancer les hooks husky en utilisant l'option --no-verify à la suite de git commit. Cela peut arriver si vous êtes sur une feature branch et que vous souhaitez vite tester un résultat en déploiement ou juste sauvegarder rapidement votre travail en fin de journée. Le linter ne sera donc pas passé sur tous les commits. Ce risque est encore plus grand si vous êtes plusieurs à travailler sur même branche.
Cela ne prend que 2 ou 3 sec à lancer et au moins vous êtes tranquilles.
A vous de paramétrer husky en fonction de vos besoins.
En utilisant Husky, vous pouvez facilement automatiser l'exécution de scripts pour garantir la qualité de votre code avant les commandes git les plus courantes. Que ce soit pour exécuter des linters, lancer des tests ou tout autre script personnalisé, Husky offre une solution flexible et efficace pour gérer vos hooks Git. Adopter cette pratique contribue à maintenir un codebase propre et sans erreurs, augmentant ainsi la productivité de toute l'équipe de développement.