Za npm spremembo node_modules drevesa ali kateregakoli akcijskega package.json se samodejno generira package-lock.json. Opisuje natančno drevo, ki se generira, da lahko naslednje namestitve ustvarijo isto drevo, ne glede na vmesne posodobitve odvisnosti.
Ta datoteka je namenjena oddaji v repozitorij izvorne kode in je na voljo za različne namene:
Opisuje enotno predstavitev drevesa odvisnosti, ki zagotavlja, da soigralci, namestitve in neprekinjena integracija zagotovijo namestitev popolnoma enakih odvisnosti.
Uporabnikom omogočiti orodje za "napredovanje" v prejšnje node_modules stanje brez potrebe po potrditvi same mape.
Omogočite večjo preglednost sprememb dreves z berljivimi razlikami v nadzoru izvorne kode.
In optimizirati postopek namestitve tako, da NPM preskoči podvojeno ločljivost metapodatkov iz prej nameščenih paketov.
Ključna podrobnost package-lock.json je, da ga ni mogoče izdati in bo prezrt, če ga najdemo kjerkoli zunaj vrhunskega paketa. Format si deli z npm-shrinkwrap.json, v bistvu je ista datoteka, a omogoča objavo. To ni priporočljivo, razen če namestite CLI orodje ali drugače uporabite postopek izdaje za izdelavo produkcijskega paketa.
Če v korenskem imeniku paketa obstajata tako package-lock.json kot npm-shrinkwrap.json, bo package-lock.json popolnoma prezrto.
Izvirna povezava: https://docs.npmjs.com/files/package-lock.json
Od izdaje npm 5.x se je vloga zaklepa 5.6.0 večkrat spremenila, zdaj pa je veliko majhnih belih besedil na internetu ujetih v prejšnji prevod dokumentov.
Posodobil sem z npm3.x na npm5, vendar sem ugotovil, da pojav pri izvajanju 'npm i' ni bil skladen s popularnoznanstvenim člankom na internetu.
Omenjeno je, da ne glede na to, kako package.json datoteka spremenjena, če se npm i večkrat izvaja, se npm prenese glede na informacije o različici, opisane v datoteki za zaklepanje.
Omenjeno je tudi, da ob ponavljanju npm i npm ignorira informacije o zaklepu in prenese modul posodobitve glede na semantične verzijske informacije paketa v package.json (zaklepanje se zdi neuporabno).
**Po podatkih so se pravila npm i od izida npm 5.0 spremenila trikrat. **
1. npm 5.0.x različica, ne glede na spremembe package.json bo npm i prenesen glede na zaklepno datoteko
package-lock.json datoteka ni posodobljena po package.json spremembi · Številka #16866 · NPM/NPM https://github.com/npm/npm/issues/16866 Ta težava se pritožuje zaradi te težave, očitno sem package.json zamenjal ročno, zakaj mi ne daš paketa za nadgradnjo! In potem vodi do vprašanja 5.1.0...
2. Po različici 5.1.0 bo namestitev npm ignorirala zaklepno datoteko in prenesla najnovejši npm
Potem je nekdo izpostavil to vprašanje, zakaj se paketno zaklepanje ignorira? · Številka #17979 · NPM/NPM https://github.com/npm/npm/issues/17979 Pritožba se je sčasoma razvila v pravila po različici 5.4.2.
3. Po različici 5.4.2, zakaj se zaklepanje paketa ignorira? · Številka #17979 · NPM/NPM https://github.com/npm/npm/issues/17979
Približno povedano, če je package.json spremenjen in je package.json drugačen od datoteke zaklepa, bo npm prenesel najnovejši paket glede na številko različice in semantični pomen paketa ob izvajanju 'npm i' ter ga posodobil na zaklepanje.
Če sta oba v istem stanju, bom pri izvajanju npm prenesel v skladu z zaklepom, ne glede na to, ali je dejanska različica paketa nova ali ne.
|