npm 5 ble utgitt i dag og en av de nye funksjonene inkluderer deterministiske installasjoner med opprettelse av en package-lock.json
-fil.
Skal denne filen oppbevares i kildekontrollen?
Jeg antar at den ligner på yarn.lock
og composer.lock
, som begge skal oppbevares i kildekontrollen.
Ja, package-lock.json
er ment å sjekkes inn i kildekontrollen. Hvis du bruker npm 5, kan du se dette på kommandolinjen: created a lockfile as package-lock.json. You should commit this file.
Ifølge npm help package-lock.json
:
package-lock.json
blir automatisk generert for alle operasjoner der npm endrer entennode_modules
-treet ellerpackage.json
. Den beskriver det nøyaktige treet som ble generert, slik at etterfølgende installasjoner er i stand til å generere identiske trær, uavhengig av mellomliggende avhengighetsoppdateringer.
Denne filen er beregnet på å bli lagt inn i kildedepoter, og tjener forskjellige forskjellige formål:
- Beskrive en enkelt representasjon av et avhengighetstre slik at teammedlemmer, distribusjoner og kontinuerlig integrasjon garanteres å installere nøyaktig de samme avhengighetene.
- Gi en mulighet for brukere til å "tidsreise" til tidligere tilstander av
node_modules
uten å måtte forplikte selve katalogen.
- Å legge til rette for større synlighet av treendringer gjennom lesbare kildekontrollforskjeller.
- Og optimalisere installasjonsprosessen ved å la npm hoppe over gjentatte metadataoppløsninger for tidligere installerte pakker.
En viktig detalj om
package-lock.json
er at den ikke kan publiseres, og den vil bli ignorert hvis den finnes på et annet sted enn pakken på toppnivå. Den deler et format med npm-shrinkwrap.json(5), som i hovedsak er den samme filen, men som tillater publisering. Dette anbefales ikke med mindre du distribuerer et CLI-verktøy eller på annen måte bruker på annen måte bruker publiseringsprosessen for å produsere produksjonspakker.
Hvis både
package-lock.json
ognpm-shrinkwrap.json
er til stede i roten til en pakke, vilpackage-lock.json
ikke bli publisert. en pakke, vilpackage-lock.json
bli fullstendig ignorert.
Ja, du kan overføre denne filen. Fra npm's offisielle dokumenter:
package-lock.json
genereres automatisk for alle operasjoner dernpm
endrer entennode_modules
-treet ellerpackage.json
. Den beskriver det nøyaktige treet som ble generert, slik at etterfølgende installasjoner kan generere identiske trær, uavhengig av mellomliggende avhengighetsoppdateringer.Denne filen er beregnet på å legges inn i kildearkiver[...].