NPM-i muutmisel node_modules puu või mõne muu tegevuse package.json puhul genereeritakse automaatselt package-lock.json. See kirjeldab täpset puud, mis genereeritakse, et järgnevad installatsioonid saaksid sama puu genereerida, sõltumata vahepealsetest sõltuvusuuendustest.
See fail on mõeldud lähtekoodi hoidla esitamiseks ja on saadaval mitmel otstarbel:
Kirjeldab ühte sõltuvuspuu esitlust, et tagada, et meeskonnakaaslased, juurutused ja pidev integreerimine tagavad, et täpselt samad sõltuvused on paigaldatud.
Anna kasutajatele tööriist, et "edasi liikuda" eelmisse node_modules olekusse ilma, et peaks ise kataloogi ise kinnitama.
Soodustada puu muutuste paremat nähtavust loetavate allikakontrolli erinevuste kaudu.
Ja optimeerida paigaldusprotsessi, võimaldades NPM-il vahele jätta varem paigaldatud pakettide duplikaatset metaandmete lahendust.
Oluline detail package-lock.json on see, et seda ei saa välja anda ja seda ignoreeritakse, kui seda leitakse väljaspool tipptasemel paketti. See jagab formaati npm-shrinkwrap.json-ga, see on sisuliselt sama fail, kuid võimaldab avaldamist. See ei ole soovitatav, välja arvatud juhul, kui juurutate CLI-tööriista või muul viisil kasutate väljalaskeprotsessi tootmispaketi loomiseks.
Kui nii package-lock.json kui ka npm-shrinkwrap.json eksisteerivad paketi juurkataloogis, siis package-lock.json ignoreeritakse täielikult.
Originaallink: https://docs.npmjs.com/files/package-lock.json
Alates npm 5.x väljalaskest on 5.6.0 lukustuse roll korduvalt muutunud ning nüüd on paljud väikesed valged tekstid internetis kinni jäänud varasemasse dokumenditõlkesse.
Uuendasin npm3.x-lt npm5-le, kuid avastasin, et nähtus 'npm i' käivitamisel ei olnud kooskõlas internetis levinud populaarteadusliku artikliga.
Mainitakse, et ükskõik kui palju package.json faili muudetakse, kui npm i korduvalt käivitatakse, laaditakse npm alla vastavalt lukustusfailis kirjeldatud versiooniteabele.
Samuti mainitakse, et kui npm i kordab, ignoreerib npm lukustusinfot ja laadib uuendusmooduli alla vastavalt paketi semantilise versiooni infole package.json (lukk tundub kasutu).
**Info kohaselt on NPM I reegleid alates NPM 5.0 ilmumisest kolm korda muutunud. **
1. NPM 5.0.x versioon, ükskõik kuidas package.json muutub, NPM I laaditakse alla vastavalt lukufailile
package-lock.json faili ei uuendata pärast package.json faili muutmist · Väljaanne #16866 · NPM/NPM https://github.com/npm/npm/issues/16866 See probleem kaebab selle üle, loomulikult vahetasin package.json käsitsi, miks sa ei anna mulle uuenduspaketti! Ja siis viib see 5.1.0 probleemini...
2. Pärast versiooni 5.1.0 ignoreerib npm paigaldus lukufaili, et laadida alla uusim npm
Siis tõstatas keegi selle küsimuse, miks paketilukustust ignoreeritakse? · Väljaanne #17979 · NPM/NPM https://github.com/npm/npm/issues/17979 Kaebus arenes lõpuks reegliteks pärast versiooni 5.4.2.
3. Pärast versiooni 5.4.2, miks paketilukustust ignoreeritakse? · Väljaanne #17979 · NPM/NPM https://github.com/npm/npm/issues/17979
Umbkaudselt, kui package.json muudetakse ja package.json erineb lukufailist, laadib npm alla uusima paketi vastavalt versiooninumbrile ja paketi semantilisele tähendusele 'npm i' käivitamisel ning uuendab selle lukustuseks.
Kui mõlemad on samas olekus, siis käivitades NPM-i laadin alla vastavalt lukustusele, sõltumata sellest, kas tegelik paketiversioon on uus või mitte.
|