✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Come utilizzare gli hook Git per rilevare le modifiche a un file di blocco e mostrare un messaggio

28

Quando lavoriamo in un team collaborativo, di tanto in tanto uno sviluppatore deve aggiungere un nuovo pacchetto a un ramo che viene poi unito al master. Qualcuno potrebbe non esserne a conoscenza e semplicemente estrarre master ed eseguire l’app solo per farla arrestare in modo anomalo a causa del pacchetto mancante. Vediamo come possiamo utilizzare gli hook Git per rilevare le modifiche a package.jsono a yarn.locke visualizzare un messaggio che richiede all’utente di installare le dipendenze mancanti.

Cosa sono gli hook Git?

Gli hook Git vengono attivati ​​quando si verifica un evento Git come un nuovo commit, il push di commit su un ramo online, pull commit, checkout di un ramo o unione di un ramo. Questi processi terminano con 0 quando terminano correttamente o con un altro valore quando terminano in modo errato.

Se il processo agganciato termina con 0, l’azione Git procede. In caso contrario, l’azione Git viene bloccata. Ad esempio, se configuri un hook Git pre-commit per lint il tuo codice, Git lo eseguirà quando esegui un git commit. Se il lint fallisce, il commit non andrà a buon fine.

Gli hook Git sono qualcosa di integrato in Git e l’elenco degli hook è molto ampio. Ad esempio, hai pre-push, post-commit, post-checkout, post-merge e molti altri hook Git.

Esegui Git hook con Husky

Per eseguire alcune attività quando gli hook Git vengono attivati, possiamo utilizzare il pacchetto Husky per Node.js. Husky ci consente di specificare in un package.jsonfile quali script eseguire quando viene attivato un hook Git. Installa il pacchetto Husky con NPM:

npm i -D husky

o Filato:

yarn add -D husky

Ora devi inizializzare Husky per gli hook Git. Se usi NPM:

npx husky install

e se usi Filato

yarn husky install

e il gioco è fatto, ora hai installato e configurato Husky per eseguire gli hook Git. È finalmente arrivato il momento di definire un gancio!

Aggiungi un hook Git post-unione per controllare le modifiche ai file di blocco

Vogliamo eseguire del codice per avvisarci se i file package-lock.jsono yarn.locksono cambiati. Questo accade di solito quando estraiamo mastere questi file sono cambiati. Possiamo impostare un hook da eseguire quando uniamo un ramo.

Per specificare i nostri hook Git su Husky li definiamo nel package.jsonfile. Aggiungi questo come chiave di livello superiore:

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

Ciò che dice è che dopo aver unito un ramo, eseguiremo questo script. Ora dobbiamo crearlo. Crea una cartella, aggiungi un file e impostalo come eseguibile:

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

Se non lo imposti per essere eseguibile, ti imbatterai in un errore "Autorizzazione negata" quando Husky tenta di eseguire questo hook Git. Ora modifica il file con Vim o il tuo editor preferito e incollalo al suo interno:

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

Questo stamperà un messaggio in viola con le parole package-lock.jsone npm installin arancione. Questo script controlla se package-lock.jsonè stato aggiornato e se vuoi provare yarn.lockinvece dovrai semplicemente sostituire il nome del file.

Testare il controllo di modifica del file di blocco

Testare questo non è troppo complesso. Fondamentalmente devi solo creare un nuovo ramo, installare un pacchetto in modo che package-lock.jsonvenga modificato, eseguirne il commit e passare al ramo precedente. Tutto ciò che può essere fatto con questo comando:

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

Ora devi unirlo a questo ramo

git merge testbranch

Questo attiverà l’hook post-unione ed eseguirà il nostro script. Vedrai quindi questo messaggio nella riga di comando perché package-lock.jsonè stato modificato durante l’unione:

Rilevamento di una modifica del file di blocco in VS Code

Questo era solo un uso. Gli hook Git possono essere usati in molti modi, ad esempio, per eseguire il popolare pacchetto Prettier prima di eseguire il commit di qualcosa per formattare il codice.

Ci sono alternative per questo caso particolare, di verificare se package-lock.jsonè stato aggiornato. Ad esempio, per VS Code c’è un bel pacchetto Aggiorna pacchetti NPM che ti chiederà di aggiornare i tuoi pacchetti se rileva una modifica. Verrà eseguito indipendentemente dal fatto che tu abbia impostato o meno gli hook Git. Un’altra cosa bella è che funzionerà quando cambi ramo, anche senza fonderne uno nell’altro.

Come utilizzare gli hook Git per rilevare le modifiche a un file di blocco e mostrare un messaggio

Tuttavia, il vantaggio di ciò che abbiamo implementato qui è che verrà eseguito nella riga di comando e non dipende da un particolare editor di codice. Se stai lavorando, ad esempio, su un progetto open source, potresti voler impostare ciò che è descritto qui in modo che ci sia un terreno comune per tutti gli sviluppatori coinvolti indipendentemente dalla loro configurazione.

Fonte di registrazione: 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