For npm-modifikation node_modules træ eller enhver handling package.json vil en package-lock.json automatisk blive genereret. Den beskriver det præcise træ, der genereres, så efterfølgende installationer kan generere det samme træ, uanset mellemliggende afhængighedsopdateringer.
Denne fil er beregnet til at blive indsendt til kildekode-repositoriet og er tilgængelig til forskellige formål:
Beskriver en enkelt repræsentation af afhængighedstræet for at sikre, at holdkammerater, implementeringer og kontinuerlig integration sikrer, at de samme afhængigheder installeres.
Giv brugerne et værktøj til at "rykke frem" til en tidligere node_modules-tilstand uden at skulle committe selve mappen.
Facilitere større synlighed af træændringer gennem læsbare forskelle i kildekontrol.
Og optimer installationsprocessen ved at lade npm springe den duplikerede metadata-opløsning over fra tidligere installerede pakker.
En vigtig detalje ved package-lock.json er, at den ikke kan udgives og vil blive ignoreret, hvis den findes uden for toppakken. Den deler formatet med npm-shrinkwrap.json, det er grundlæggende den samme fil, men tillader publicering. Dette anbefales ikke, medmindre du udruler et CLI-værktøj eller på anden måde bruger udgivelsesprocessen til at producere en produktionspakke.
Hvis både package-lock.json og npm-shrinkwrap.json findes i rodmappen i en pakke, vil package-lock.json blive ignoreret fuldstændigt.
Originalt link: https://docs.npmjs.com/files/package-lock.json
Siden udgivelsen af npm 5.x har rollen for 5.6.0-låsen ændret sig mange gange, og nu sidder mange små hvide tekster på internettet fast i den tidligere dokumentoversættelse.
Jeg opdaterede fra npm3.x til npm5, men fandt ud af, at fænomenet, når man udførte 'npm i', ikke var i overensstemmelse med den populære videnskabelige artikel på internettet.
Det nævnes, at uanset hvordan package.json fil ændres, hvis npm i gentagne gange udføres, vil npm blive downloadet i henhold til versionsoplysningerne beskrevet i låsefilen.
Det nævnes også, at når npm i, ignorerer npm låseinformationen og downloader opdateringsmodulet i henhold til den semantiske versioneringsversion af pakken i package.json (låsen synes at være ubrugelig).
**Ifølge oplysningerne er reglerne for npm i ændret tre gange siden udgivelsen af npm 5.0. **
1. NPM 5.0.x version, uanset hvordan package.json ændrer sig, vil npm I blive downloadet i henhold til låsefilen
package-lock.json fil opdateres ikke efter package.json fil er ændret · Nummer #16866 · NPM/NPM-https://github.com/npm/npm/issues/16866 Dette problem klager over dette problem, selvfølgelig ændrede jeg package.json manuelt, hvorfor giver du mig ikke en opgraderingspakke! Og så fører det til problemet med 5.1.0...
2. Efter version 5.1.0 vil npm-installationen ignorere låsefilen for at downloade den nyeste npm
Så rejste nogen dette problem: hvorfor bliver pakkelås ignoreret? · Nummer #17979 · NPM/NPM-https://github.com/npm/npm/issues/17979 Klagen udviklede sig til sidst til reglerne efter version 5.4.2.
3. Efter version 5.4.2, hvorfor ignoreres pakkelås? · Nummer #17979 · NPM/NPM-https://github.com/npm/npm/issues/17979
Groft sagt, hvis package.json ændres, og package.json er forskellig fra låsefilen, vil npm downloade den nyeste pakke i henhold til versionsnummeret og pakkens semantiske betydning ved udførelse af 'npm i' og opdatere den til lås.
Hvis begge er i samme tilstand, vil npm I downloade i henhold til lock, uanset om den faktiske pakkeversion er ny eller ej.
|