For npm-modifikasjon node_modules tre eller enhver handling package.json, vil en package-lock.json automatisk bli generert. Den beskriver det eksakte treet som genereres slik at påfølgende installasjoner kan generere det samme treet, uavhengig av mellomliggende avhengighetsoppdateringer.
Denne filen er ment å sendes inn i kildekodearkivet og er tilgjengelig for ulike formål:
Beskriver en enkelt representasjon av avhengighetstreet for å sikre at teammedlemmer, distribusjoner og kontinuerlig integrasjon sikrer at nøyaktig de samme avhengighetene installeres.
Gi brukerne et verktøy for å «gå videre» til en tidligere node_modules-tilstand uten å måtte committe selve katalogen.
Legge til rette for større synlighet av treendringer gjennom lesbare forskjeller i kildekontroll.
Og optimalisere installasjonsprosessen ved å la npm hoppe over den dupliserte metadataoppløsningen fra tidligere installerte pakker.
En viktig detalj om package-lock.json er at den ikke kan utgis og vil bli ignorert hvis den finnes utenfor topppakken. Den deler formatet med npm-shrinkwrap.json, det er i bunn og grunn samme fil, men tillater publisering. Dette anbefales ikke med mindre du distribuerer et CLI-verktøy eller på annen måte bruker utgivelsesprosessen for å lage en produksjonspakke.
Hvis både package-lock.json og npm-shrinkwrap.json finnes i rotkatalogen til en pakke, vil package-lock.json bli fullstendig ignorert.
Original lenke: https://docs.npmjs.com/files/package-lock.json
Siden lanseringen av npm 5.x har rollen til 5.6.0-låsen endret seg mange ganger, og nå sitter mange små hvite tekster på Internett fast i den forrige dokumentoversettelsen.
Jeg oppdaterte fra npm3.x til npm5, men fant ut at fenomenet når man kjørte 'npm i' ikke var i samsvar med populærvitenskapsartikkelen på Internett.
Det nevnes at uansett hvordan package.json filen endres, hvis npm i kjøres gjentatte ganger, vil npm bli lastet ned i henhold til versjonsinformasjonen beskrevet i låsefilen.
Det nevnes også at når npm i gjentas, ignorerer npm låseinformasjonen og laster ned oppdateringsmodulen i henhold til den semantiske versjonsversjonen av pakken i package.json (lås virker ubrukelig).
**Ifølge informasjonen har reglene for npm i endret seg tre ganger siden lanseringen av npm 5.0. **
1. npm 5.0.x-versjon, uansett hvordan package.json endres, vil npm I bli lastet ned i henhold til låsefilen
package-lock.json fil som ikke oppdateres etter at package.json filen er endret · Utgave #16866 · NPM/NPM-https://github.com/npm/npm/issues/16866 Dette problemet klager på dette problemet, åpenbart endret jeg package.json manuelt, hvorfor gir du meg ikke en oppgraderingspakke! Og så fører det til problemet med 5.1.0...
2. Etter versjon 5.1.0 vil npm-installasjonen ignorere låsefilen for å laste ned den nyeste npm
Så tok noen opp dette spørsmålet: hvorfor blir pakkelås ignorert? · Utgave #17979 · NPM/NPM-https://github.com/npm/npm/issues/17979 Klagen utviklet seg etter hvert til reglene etter versjon 5.4.2.
3. Etter versjon 5.4.2, hvorfor ignoreres pakkelås? · Utgave #17979 · NPM/NPM-https://github.com/npm/npm/issues/17979
Grovt sagt, hvis package.json endres, og package.json er forskjellig fra låsefilen, vil npm laste ned den nyeste pakken i henhold til versjonsnummer og den semantiske betydningen av pakken når 'npm i' kjøres, og oppdatere den til lås.
Hvis begge er i samme tilstand, vil jeg laste ned npm i henhold til Lock, uavhengig av om selve pakkeversjonen er ny eller ikke.
|