Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Comment utiliser les crochets Git pour détecter les modifications apportées à un fichier de verrouillage et afficher un message

15

Lorsque nous travaillons en équipe collaborative, de temps en temps un développeur doit ajouter un nouveau package à une branche qui est ensuite fusionnée dans master. Quelqu’un peut ne pas en être conscient et simplement tirer le maître et exécuter l’application uniquement pour la faire planter en raison du paquet manquant. Voyons comment nous pouvons utiliser les crochets Git pour détecter les modifications apportées à a package.jsonou a yarn.locket afficher un message invitant l’utilisateur à installer les dépendances manquantes.

Que sont les crochets Git ?

Les crochets Git sont déclenchés lorsqu’un événement Git se produit, tel qu’un nouveau commit, l’envoi de commits vers une branche en ligne, l’extraction de commits, l’extraction d’une branche ou la fusion d’une branche. Ces processus se terminent par 0 lorsqu’ils se terminent correctement ou par une autre valeur lorsqu’ils se terminent incorrectement.

Si le processus accroché se termine par 0, l’action Git se poursuit. Sinon, l’action Git est bloquée. Par exemple, si vous configurez un hook Git pré-commit pour pelucher votre code, Git l’exécutera lorsque vous ferez un git commit. Si le lint échoue, le commit ne passera pas.

Les crochets Git sont intégrés à Git et la liste des crochets est très longue. Par exemple, vous avez pre-push, post-commit, post-checkout, post-merge et de nombreux autres crochets Git.

Exécutez des crochets Git avec Husky

Pour exécuter certaines tâches lorsque les crochets Git sont déclenchés, nous pouvons utiliser le package Husky pour Node.js. Husky nous permet de spécifier dans un package.jsonfichier les scripts à exécuter lorsqu’un crochet Git est déclenché. Installez le package Husky avec NPM :

npm i -D husky

ou Fil:

yarn add -D husky

Vous devez maintenant initialiser Husky pour les hooks Git. Si vous utilisez NPM :

npx husky install

et si vous utilisez Yarn

yarn husky install

et voilà, vous avez maintenant installé et configuré Husky pour exécuter les crochets Git. Il est enfin temps de définir un crochet !

Ajouter un crochet Git post-fusion pour vérifier les modifications du fichier de verrouillage

Nous voulons exécuter du code pour nous alerter si les fichiers package-lock.jsonou yarn.lockont changé. Cela se produit généralement lorsque nous tirons masteret que ces fichiers ont changé. Nous pouvons configurer un hook à exécuter lorsque nous fusionnons une branche.

Pour spécifier nos crochets Git à Husky, nous les définissons dans le package.jsonfichier. Ajoutez ceci en tant que clé de niveau supérieur :

"husky": { "hooks": { "post-merge": "./githooks/post-merge-hook.sh" } }

Ce que cela dit, c’est qu’après la fusion d’une branche, nous exécuterons ce script. Nous devons maintenant le créer. Créez un dossier, ajoutez-y un fichier et définissez-le pour qu’il soit exécutable :

mkdir githooks && cd githooks && touch post-merge-hook.sh && chmod +x post-merge-hook.sh

Si vous ne le définissez pas pour qu’il soit exécutable, vous rencontrerez une erreur « Permission refusée » lorsque Husky tentera d’exécuter ce crochet Git. Modifiez maintenant le fichier avec Vim ou votre éditeur préféré et collez-y ceci :

changedFiles="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)" runOnChange() { echo "$changedFiles" | grep -q "$1" && echo -e "$2" } runOnChange package-lock.json "033[35m*******************************************************************************n* 033[33mpackage-lock.json033[35m has changed. Run033[33m npm install033[35m to update your dependencies. *n*******************************************************************************" exit 0

Cela imprimera un message en violet avec les mots package-lock.jsonet npm installen orange. Ce script vérifie si package-lock.jsona été mis à jour et si vous souhaitez tester à la yarn.lockplace, vous devrez simplement remplacer le nom du fichier.

Tester la vérification des modifications du fichier de verrouillage

Tester ce n’est pas trop complexe. En gros, il vous suffit de créer une nouvelle branche, d’installer un package pour le package-lock.jsonmodifier, de le valider et de passer à la branche précédente. Tout ce qui peut être fait avec cette commande :

git checkout -b testbranch && npm i -D lint-staged && git add. && git commit -m "test" && git checkout -

Maintenant, vous devez le fusionner sur cette branche

git merge testbranch

Cela déclenchera le crochet post-fusion et exécutera notre script. Vous verrez alors ce message dans la ligne de commande car le package-lock.jsona été modifié lors de la fusion :

Détection d’un changement de fichier de verrouillage dans VS Code

Ce n’était qu’une seule utilisation. Les crochets Git peuvent être utilisés de plusieurs façons, par exemple, pour exécuter le package populaire Prettier avant de valider quelque chose pour formater votre code.

Il existe des alternatives pour ce cas particulier, de vérifier si package-lock.jsona été mis à jour. Par exemple, pour VS Code, il existe un package astucieux Refresh NPM Packages qui vous invitera à mettre à jour vos packages s’il détecte une modification. Il fonctionnera indépendamment du fait que vous ayez configuré ou non des crochets Git. Une autre bonne chose est que cela fonctionnera lorsque vous changerez de branche, même sans fusionner l’une dans l’autre.

Comment utiliser les crochets Git pour détecter les modifications apportées à un fichier de verrouillage et afficher un message

Cependant, l’avantage de ce que nous avons implémenté ici est qu’il s’exécutera en ligne de commande et ne dépendra pas d’un éditeur de code particulier. Si vous travaillez par exemple sur un projet open source, vous souhaiterez peut-être configurer ce qui est décrit ici afin qu’il existe un terrain d’entente pour tous les développeurs impliqués, quelle que soit leur configuration.

Source d’enregistrement: startfunction.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More