Pre NPM úpravu node_modules strome alebo akéhokoľvek akčného package.json sa automaticky vygeneruje package-lock.json. Popisuje presný strom, ktorý sa generuje, aby nasledujúce inštalácie mohli generovať ten istý strom bez ohľadu na medziaktualizácie závislostí.
Tento súbor je určený na odoslanie do úložiska zdrojového kódu a je dostupný na rôzne účely:
Popisuje jednu reprezentáciu stromu závislostí, ktorá zaručuje, že spoluhráči, nasadenia a kontinuálna integrácia zabezpečia inštaláciu presne tých istých závislostí.
Poskytnúť používateľom nástroj na "posun" do predchádzajúceho node_modules stavu bez nutnosti commitovať samotný adresár.
Uľahčiť lepšiu viditeľnosť zmien stromu prostredníctvom čitateľných rozdielov v riadení zdrojového kódu.
A optimalizovať inštalačný proces tým, že NPM umožní preskočiť duplicitné rozlíšenie metadát z predtým nainštalovaných balíkov.
Kľúčovým detailom o package-lock.json je, že ho nie je možné vydať a ak sa nájde mimo najvyššieho balíka, bude ignorovaný. Zdieľa formát s npm-shrinkwrap.json, je to v podstate ten istý súbor, ale umožňuje publikovanie. Toto sa neodporúča, pokiaľ nenasadíte nástroj CLI alebo inak nevyužijete proces vydávania na vytvorenie produkčného balíka.
Ak v koreňovom adresári balíka existujú package-lock.json aj npm-shrinkwrap.json, package-lock.json bude úplne ignorované.
Pôvodný odkaz: https://docs.npmjs.com/files/package-lock.json
Od vydania npm 5.x sa úloha zámku 5.6.0 mnohokrát zmenila a teraz je veľa malých bielych textov na internete zaseknutých v predchádzajúcom preklade dokumentov.
Aktualizoval som z npm3.x na npm5, ale zistil som, že fenomén pri vykonávaní 'npm i' nebol v súlade s populárno-vedeckým článkom na internete.
Uvádza sa, že bez ohľadu na to, ako package.json súbor upravíte, ak sa npm i opakovane vykonáva, npm sa stiahne podľa verzie popísanej v zámkovom súbore.
Tiež sa uvádza, že pri opakovaní npm i npm ignoruje informácie o zámku a stiahne modul aktualizácie podľa informácií o verzii balíka v package.json (zámok sa zdá byť zbytočný).
**Podľa informácií sa pravidlá npm i zmenili trikrát od vydania npm 5.0. **
1. Verzia npm 5.0.x, bez ohľadu na to, ako sa package.json zmení, NPM I bude stiahnutý podľa zámkového súboru
package-lock.json súbor sa neaktualizuje po zmene package.json súbor · Číslo #16866 · NPM/NPM https://github.com/npm/npm/issues/16866 Tento problém sa sťažuje na tento problém, samozrejme som package.json menil manuálne, prečo mi nedáš upgrade balík! A potom to vedie k problému 5.1.0...
2. Po verzii 5.1.0 inštalácia npm ignoruje uzamykací súbor a stiahne najnovší npm
Potom niekto nastolil túto otázku, prečo sa balíkový zámok ignoruje? · Číslo #17979 · NPM/NPM https://github.com/npm/npm/issues/17979 Sťažnosť sa nakoniec vyvinula do pravidiel po verzii 5.4.2.
3. Prečo sa po verzii 5.4.2 balíkový zámok ignoruje? · Číslo #17979 · NPM/NPM https://github.com/npm/npm/issues/17979
Zhruba povedané, ak sa zmení package.json a package.json sa líši od súboru zámku, npm si pri vykonávaní 'npm i' stiahne najnovší balík podľa čísla verzie a sémantického významu balíka a aktualizuje ho na lock.
Ak sú obe v rovnakom stave, potom spustenie npm i stiahnem podľa locku, bez ohľadu na to, či je skutočná verzia balíka nová alebo nie.
|