Pro NPM úpravu node_modules stromu nebo jakékoliv akční package.json bude package-lock.json automaticky generován. Popisuje přesný strom, který je generován, aby následující instalace mohly generovat stejný strom bez ohledu na meziaktualizace závislostí.
Tento soubor je určen k odeslání do úložiště zdrojového kódu a je dostupný pro různé účely:
Popisuje jedinou reprezentaci stromu závislostí, která zajišťuje, že spoluhráči, nasazení a kontinuální integrace zajistí, že jsou nainstalovány přesně stejné závislosti.
Poskytnout uživatelům nástroj pro "postup" do předchozího node_modules stavu bez nutnosti commitovat samotný adresář.
Usnadnit lepší přehled o změnách stromu díky čitelným rozdílům ve správě zdrojových kódů.
A optimalizovat instalační proces tím, že NPM umožní přeskočit duplicitní rozlišení metadat dříve nainstalovaných balíčků.
Klíčovým detailem package-lock.json je, že nemůže být vydán a pokud se objeví mimo špičkový balíček, bude ignorován. Sdílí formát s npm-shrinkwrap.json, je to v podstatě stejný soubor, ale umožňuje publikování. To se nedoporučuje, pokud nenasadíte nástroj CLI nebo jinak nevyužijete proces vydání k vytvoření produkčního balíčku.
Pokud v kořenovém adresáři balíčku existují package-lock.json i npm-shrinkwrap.json, bude package-lock.json zcela ignorován.
Původní odkaz: https://docs.npmjs.com/files/package-lock.json
Od vydání npm 5.x se role zámku 5.6.0 mnohokrát změnila a nyní je mnoho malých bílých textů na internetu zaseknutých v předchozím překladu dokumentů.
Aktualizoval jsem z npm3.x na npm5, ale zjistil jsem, že jev při provádění 'npm i' není v souladu s populárně-vědeckým článkem na internetu.
Je zmíněno, že bez ohledu na to, jak package.json soubor upravíte, pokud je npm i opakovaně vykonáváno, NPM bude staženo podle informací o verzi popsaných v souboru.
Také se uvádí, že při opakování npm i npm ignoruje informace o zámku a stáhne aktualizační modul podle informací o verzi balíčku v package.json (zámek se zdá být k ničemu).
**Podle informací se pravidla npm i od vydání npm 5.0 změnila třikrát. **
1. Verze npm 5.0.x, bez ohledu na to, jak se package.json změní, NPM I bude stažen podle zámkového souboru
package-lock.json soubor není aktualizován po změně package.json souboru · Číslo #16866 · NPM/NPM https://github.com/npm/npm/issues/16866 Tento problém si stěžuje, samozřejmě jsem package.json změnil ručně, proč mi nedáte upgrade balíček! A pak to vede k vydání 5.1.0...
2. Po verzi 5.1.0 instalace npm ignoruje zámek soubor, aby stáhla nejnovější npm
Pak někdo nastolil tento problém, proč je pack-lock ignorován? · Číslo #17979 · NPM/NPM https://github.com/npm/npm/issues/17979 Stížnost se nakonec vyvinula do pravidel po verzi 5.4.2.
3. Proč je po verzi 5.4.2 package-lock ignorován? · Číslo #17979 · NPM/NPM https://github.com/npm/npm/issues/17979
Zhruba řečeno, pokud je package.json změněn a package.json se liší od zámkového souboru, npm stáhne nejnovější balíček podle čísla verze a sémantického významu balíčku při spuštění 'npm i' a aktualizuje ho na lock.
Pokud jsou oba ve stejném stavu, pak spuštění npm stáhne podle zámku, bez ohledu na to, jestli je skutečná verze balíčku nová nebo ne.
|