Npm modifikavimo node_modules medyje ar bet kokiame veiksmo package.json package-lock.json bus sugeneruotas automatiškai. Jame aprašomas tikslus medis, kuris sugeneruojamas, kad vėlesni įrenginiai galėtų generuoti tą patį medį, neatsižvelgiant į tarpinius priklausomybės naujinimus.
Šis failas skirtas pateikti į šaltinio kodo saugyklą ir yra prieinamas įvairiems tikslams:
Aprašomas vienas priklausomybių medžio vaizdas, užtikrinantis, kad komandos nariai, diegimai ir nuolatinė integracija užtikrintų, kad būtų įdiegtos tos pačios priklausomybės.
Suteikite vartotojams įrankį, kad jie galėtų "pereiti" į ankstesnę node_modules būseną, neįpareigojant paties katalogo.
Palengvinkite geresnį medžio pokyčių matomumą naudodami skaitomus šaltinio valdymo skirtumus.
Ir optimizuokite diegimo procesą, leisdami npm praleisti pasikartojančią anksčiau įdiegtų paketų metaduomenų skiriamąją gebą.
Pagrindinė package-lock.json detalė yra ta, kad jos negalima išleisti ir bus ignoruojama, jei bus rasta kur nors už aukščiausio lygio paketo ribų. Jis dalijasi formatu su npm-shrinkwrap.json, iš esmės tai yra tas pats failas, bet leidžia publikuoti. Tai nerekomenduojama, nebent įdiegiate CLI įrankį arba kitaip naudojate išleidimo procesą gamybos paketui sukurti.
Jei package-lock.json ir npm-shrinkwrap.json yra šakniniame paketo kataloge, package-lock.json bus visiškai ignoruojami.
Originali nuoroda: https://docs.npmjs.com/files/package-lock.json
Nuo npm 5.x išleidimo 5.6.0 užrakto vaidmuo daug kartų pasikeitė, o dabar daugelis mažų baltų tekstų internete įstrigo ankstesniame dokumento vertime.
Atnaujinau iš npm3.x į npm5, bet pastebėjau, kad reiškinys vykdant "npm i" neatitiko populiariojo mokslo straipsnio internete.
Minima, kad nesvarbu, kaip package.json failas bus modifikuotas, jei npm i bus pakartotinai vykdomas, npm bus atsisiųstas pagal užrakto faile aprašytą versijos informaciją.
Taip pat minima, kad kartodamas npm i, npm ignoruos užrakto informaciją ir atsisiųs atnaujinimo modulį pagal package.json paketo semantinės versijos versijos informaciją (užraktas atrodo nenaudingas).
**Remiantis informacija, nuo npm 5.0 išleidimo npm i taisyklės keitėsi tris kartus. **
1. NPM 5.0.x versija, nesvarbu, kaip keičiasi package.json, NPM I bus atsisiųstas pagal užrakto failą
package-lock.json failas neatnaujintas pakeitus package.json failą · Numeris #16866 · NPM/NPM https://github.com/npm/npm/issues/16866 Šis klausimas skundžiasi šia problema, akivaizdu, kad package.json pakeičiau rankiniu būdu, kodėl gi nesuteikus man atnaujinimo paketo! Ir tada tai veda prie 5.1.0 klausimo...
2. Po 5.1.0 versijos npm diegimas nepaisys užrakto failo, kad atsisiųstų naujausią npm
Tada kažkas iškėlė šį klausimą, kodėl paketo užraktas ignoruojamas? · Numeris #17979 · NPM/NPM https://github.com/npm/npm/issues/17979 Skundas galiausiai išsivystė į taisykles po 5.4.2 versijos.
3. Kodėl po 5.4.2 versijos paketo užraktas ignoruojamas? · Numeris #17979 · NPM/NPM https://github.com/npm/npm/issues/17979
Grubiai tariant, jei package.json bus pakeistas, o package.json skiriasi nuo užrakto failo, npm atsisiųs naujausią paketą pagal paketo versijos numerį ir semantinę reikšmę, vykdydamas "npm i", ir atnaujins jį į užrakinimą.
Jei abu yra toje pačioje būsenoje, tada vykdant npm i atsisiųs pagal užraktą, nepriklausomai nuo to, ar faktinė paketo versija yra nauja, ar ne.
|