Kuinka käyttää Git-koukkuja lukitustiedoston muutosten havaitsemiseen ja viestin näyttämiseen
Kun työskentelemme yhteistyötiimin parissa, kehittäjän on aika ajoin lisättävä haaraan uusi paketti, joka sitten yhdistetään masteriksi. Joku saattaa olla tietämätön siitä ja vetää päällikön ja käynnistää sovelluksen vain, jotta se kaatuu puuttuvan paketin takia. Katsotaanpa, kuinka voimme käyttää Git-koukkuja havaitaksemme a:n package.json
tai a :n muutokset yarn.lock
ja näyttääkseen viestin, joka kehottaa käyttäjää asentamaan puuttuvat riippuvuudet.
Mitä ovat Git-koukut?
Git-koukut laukeavat, kun jokin Git-tapahtuma tapahtuu, kuten uusi sitoumus, sitoumusten työntäminen online-haaraan, sitoumusten vetäminen, haaran tarkistaminen tai haaran yhdistäminen. Nämä prosessit päättyvät 0:aan, kun ne päättyvät oikein, tai johonkin muuhun arvoon, kun ne päättyvät väärin.
Jos kiinnitetty prosessi päättyy nollaan, Git-toiminto jatkuu. Muussa tapauksessa Git-toiminto estetään. Jos esimerkiksi määrität pre-commit Git-koukun yhdistämään koodisi, Git suorittaa tämän, kun teet git commit
. Jos nukka epäonnistuu, sitoumus ei mene läpi.
Git-koukut ovat jotain integroitua Gitiin, ja koukkujen luettelo on erittäin laaja. Sinulla on esimerkiksi pre-push, post-commit, post-checkout, post-merge ja monia muita Git-koukkuja.
Suorita Git-koukut Huskyn kanssa
Joidenkin tehtävien suorittamiseen Git-koukkujen käynnistyessä voimme käyttää Node.js:n Husky – pakettia. Husky antaa meille mahdollisuuden määrittää package.json
tiedostossa, mitkä skriptit suoritetaan, kun Git-koukut laukeavat. Asenna Husky-paketti NPM:llä:
npm i -D husky
tai lanka:
yarn add -D husky
Nyt sinun on alustettava Husky Git-koukkuja varten. Jos käytät NPM:ää:
npx husky install
ja jos käytät lankaa
yarn husky install
ja siinä kaikki, olet nyt asentanut ja määrittänyt Huskyn suorittamaan Git-koukut. On vihdoin aika määritellä koukku!
Lisää viestien yhdistäminen Git-koukku tarkistaaksesi lukitustiedoston muutokset
Haluamme suorittaa jonkin koodin varoittaaksemme, jos package-lock.json
-tiedostot yarn.lock
ovat muuttuneet. Tämä tapahtuu yleensä, kun vedämme master
ja nämä tiedostot ovat muuttuneet. Voimme asettaa koukun juoksemaan, kun yhdistämme haaran.
Määrittelemme Git-koukut Huskyyn määrittämällä ne package.json
tiedostossa. Lisää tämä ylätason avaimeksi:
"husky": {
"hooks": {
"post-merge": "./githooks/post-merge-hook.sh"
}
}
Tämä tarkoittaa, että kun haara on yhdistetty, suoritamme tämän skriptin. Meidän on nyt luotava se. Luo kansio, lisää siihen tiedosto ja aseta se suoritettavaksi:
mkdir githooks && cd githooks && touch post-merge-hook.sh && chmod +x post-merge-hook.sh
Jos et määritä sitä suoritettavaksi, saat virheilmoituksen "Lupa estetty", kun Husky yrittää suorittaa tämän Git-koukun. Muokkaa nyt tiedostoa Vimillä tai suosikkieditorillasi ja liitä se siihen:
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
Tämä tulostaa viestin violetilla sanoilla package-lock.json
ja npm install
oranssilla. Tämä komentosarja tarkistaa, onko package-lock.json
se päivitetty, ja jos haluat testata sen yarn.lock
sijaan, sinun on vain korvattava tiedoston nimi.
Testaa lukitustiedoston muutostarkistus
Tämän testaus ei ole liian monimutkaista. Pohjimmiltaan sinun tarvitsee vain luoda uusi haara, asentaa paketti, jotta sitä package-lock.json
muutetaan, sitoa se ja vaihtaa edelliseen haaraan. Kaikki mitä voidaan tehdä tällä komennolla:
git checkout -b testbranch && npm i -D lint-staged && git add. && git commit -m "test" && git checkout -
Nyt sinun on yhdistettävä se tähän haaraan
git merge testbranch
Tämä laukaisee yhdistämisen jälkeisen koukun ja suorittaa skriptimme. Näet sitten tämän viestin komentorivillä, koska sitä package-lock.json
on muokattu yhdistämisen aikana:
Lukitustiedoston muutoksen havaitseminen VS-koodissa
Tämä oli vain yksi käyttökerta. Git-koukkuja voidaan käyttää monin tavoin, esimerkiksi suositun Prettier-paketin suorittamiseen ennen kuin teet jotain koodin muotoiluun.
Tälle tietylle tapaukselle on olemassa vaihtoehtoja tarkistaa, onko package-lock.json
päivitetty. Esimerkiksi VS Codessa on näppärä paketti Refresh NPM Packages, joka kehottaa sinua päivittämään paketit, jos se havaitsee muutoksen. Se toimii riippumatta siitä, oletko asettanut Git-koukut vai et. Toinen mukava asia on, että se toimii, kun vaihdat haaraa, jopa yhdistämättä niitä toiseen.
Tässä toteuttamamme etuna on kuitenkin se, että se suoritetaan komentorivillä eikä se ole riippuvainen tietystä koodieditorista. Jos työskentelet esimerkiksi avoimen lähdekoodin projektissa, saatat haluta määrittää tässä kuvatut, jotta kaikilla mukana olevilla kehittäjillä on yhteinen perusta heidän asetuksistaan riippumatta.