Kuidas kasutada Git konksu lukufaili muudatuste tuvastamiseks ja sõnumi kuvamiseks
Kui töötame koostöötiimi kallal, peab arendaja aeg-ajalt harusse lisama uue paketi, mis seejärel liidetakse põhipaketiks. Keegi ei pruugi sellest teadlik olla ja tõmbab lihtsalt kapteni ja käivitab rakenduse, et see puuduva paketi tõttu kokku jookseb. Vaatame, kuidas saame Git konksude abil tuvastada a package.json
või a muudatusi yarn.lock
ja kuvada sõnumi, mis palub kasutajal puuduvad sõltuvused installida.
Mis on Giti konksud?
Git konksud vallandatakse, kui toimub mõni Git sündmus, näiteks uus sissemaksmine, kohustuste edastamine võrguharusse, kohustuste tõmbamine, haru kontrollimine või haru ühendamine. Need protsessid lõpevad 0-ga, kui nad lõpevad õigesti, või mõne muu väärtusega, kui nad lõppevad valesti.
Kui haagitud protsess lõpeb 0-ga, jätkub Git-toiming. Vastasel juhul on Giti toiming blokeeritud. Näiteks kui konfigureerite oma koodi lintimiseks kinnistamise eelse Giti konksu, käivitab Git selle, kui teete git commit
. Kui lint ebaõnnestub, ei lähe kohustus läbi.
Giti konksud on midagi Giti integreeritud ja konksude loend on väga ulatuslik. Näiteks on teil tõuke-eelsed, kinnistamisjärgsed, väljamaksejärgsed, liitmisjärgsed ja paljud muud Giti konksud.
Käivitage Huskyga Git konksud
Mõningate toimingute käivitamiseks Giti konksude käivitamisel saame kasutada Node.js -i jaoks Husky paketti. Husky võimaldab meil failis määrata, milliseid skripte Giti konksude käivitamisel käivitada. Installige Husky pakett NPM-iga:package.json
npm i -D husky
või lõng:
yarn add -D husky
Nüüd peate Husky Git konksude jaoks lähtestama. Kui kasutate NPM-i:
npx husky install
ja kui kasutate lõnga
yarn husky install
ja kõik, olete nüüd installinud ja konfigureerinud Husky Git konksude käitamiseks. Lõpuks on käes aeg konks määratleda!
Lukustusfaili muudatuste kontrollimiseks lisage postituste liitmise Git konks
Tahame käivitada koodi, mis hoiataks meid, kui failid package-lock.json
või yarn.lock
on muutunud. See juhtub tavaliselt siis, kui tõmbame master
ja need failid on muutunud. Saame seadistada konksu jooksma, kui ühendame haru.
Giti konksude täpsustamiseks Huskyga määratleme need package.json
failis. Lisage see tipptaseme võtmena:
"husky": {
"hooks": {
"post-merge": "./githooks/post-merge-hook.sh"
}
}
See ütleb, et pärast haru ühendamist käivitame selle skripti. Nüüd peame selle looma. Looge kaust, lisage sellele fail ja määrake see käivitatavaks:
mkdir githooks && cd githooks && touch post-merge-hook.sh && chmod +x post-merge-hook.sh
Kui te ei määra seda käivitatavaks, kuvatakse Husky Giti konksu käivitamisel tõrge "Luba keelatud". Nüüd redigeerige faili Vimi või oma lemmikredaktoriga ja kleepige see:
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
See prindib sõnumi lilla, sõnadega package-lock.json
ja npm install
oranžiga. See skript kontrollib, kas package-lock.json
seda värskendati, ja kui soovite selle yarn.lock
asemel testida, peate lihtsalt failinime asendama.
Testige lukustusfaili muutmise kontrolli
Selle testimine ei ole liiga keeruline. Põhimõtteliselt peate lihtsalt looma uue haru, installima mõne paketi, et package-lock.json
seda muudetaks, kinnitama selle ja lülituma eelmisele harule. Kõik, mida saab teha selle käsuga:
git checkout -b testbranch && npm i -D lint-staged && git add. && git commit -m "test" && git checkout -
Nüüd peate selle selle haruga liitma
git merge testbranch
See käivitab liitmisjärgse konksu ja käivitab meie skripti. Seejärel näete käsureal seda teadet, kuna package-lock.json
ühendamise ajal on seda muudetud:
Lukustusfaili muudatuse tuvastamine VS-koodis
See oli ainult üks kasutuskord. Git hooke saab kasutada mitmel viisil, näiteks populaarse paketi Prettier käivitamiseks enne, kui midagi koodi vormindate.
Selle konkreetse juhtumi jaoks on alternatiive, et kontrollida, kas package-lock.json
seda värskendati. Näiteks VS Code jaoks on olemas vahva pakett Refresh NPM Packages, mis muudatuse tuvastamisel palub teil pakette värskendada. See töötab olenemata sellest, kas olete Giti konksud seadistanud või mitte. Veel üks tore asi on see, et see toimib harude vahetamisel isegi ilma ühte neist teise ühendamata.
Kuid selle eeliseks, mida oleme siin rakendanud, on see, et see töötab käsureal ja see ei sõltu konkreetsest koodiredaktorist. Kui töötate näiteks avatud lähtekoodiga projektiga, võite soovida seadistada siin kirjeldatut, nii et kõigil kaasatud arendajatel oleks ühine alus, olenemata nende seadistustest.