Für NPM-Modifikation node_modules Baum oder jede Aktion package.json wird automatisch ein package-lock.json generiert. Er beschreibt den genauen Baum, der erzeugt wird, sodass nachfolgende Installationen denselben Baum erzeugen können, unabhängig von zwischenliegenden Abhängigkeitsupdates.
Diese Datei soll im Quellcode-Repository eingereicht werden und steht für verschiedene Zwecke zur Verfügung:
Beschreibt eine einzige Darstellung des Abhängigkeitsbaums, um sicherzustellen, dass Teammitglieder, Deployments und kontinuierliche Integration sicherstellen, dass exakt dieselben Abhängigkeiten installiert sind.
Bieten Sie den Nutzern ein Tool bereit, um in einen vorherigen node_modules-Zustand zu "vorrücken", ohne das Verzeichnis selbst commit zu müssen.
Ermöglichen Sie eine größere Sichtbarkeit von Baumänderungen durch lesbare Unterschiede in der Quellcodekontrolle.
Und den Installationsprozess zu optimieren, indem npm erlaubt, die doppelte Metadaten-Auflösung zuvor installierter Pakete zu überspringen.
Ein zentrales Detail bei package-lock.json ist, dass es nicht veröffentlicht werden kann und ignoriert wird, wenn es außerhalb des Top-Pakets gefunden wird. Es teilt sich das Format mit npm-shrinkwrap.json, es ist im Grunde dieselbe Datei, erlaubt aber das Veröffentlichen. Dies wird nicht empfohlen, es sei denn, Sie installieren ein CLI-Tool oder nutzen den Release-Prozess anderweitig zur Erstellung eines Produktionspakets.
Wenn sowohl package-lock.json als auch npm-shrinkwrap.json im Root-Verzeichnis eines Pakets existieren, werden package-lock.json vollständig ignoriert.
Originallink: https://docs.npmjs.com/files/package-lock.json
Seit der Veröffentlichung von npm 5.x hat sich die Rolle des 5.6.0-Locks vielfach verändert, und nun sind viele kleine weiße Texte im Internet in der vorherigen Dokumentübersetzung festgefahren.
Ich habe von npm3.x auf npm5 aktualisiert, aber festgestellt, dass das Phänomen beim Ausführen von 'npm i' nicht mit dem populärwissenschaftlichen Artikel im Internet übereinstimmt.
Es wird erwähnt, dass unabhängig davon, wie package.json Datei geändert wird, npm bei wiederholter Ausführung npm gemäß den in der Sperrdatei beschriebenen Versionsinformationen heruntergeladen wird.
Es wird auch erwähnt, dass npm beim Wiederholen von npm i die Lock-Informationen ignoriert und das Update-Modul gemäß den semantischen Version-Versionen des Pakets im package.json herunterlädt (Lock scheint nutzlos zu sein).
**Laut den Informationen haben sich die Regeln von npm I seit der Veröffentlichung von npm 5.0 dreimal geändert. **
1. npm 5.0.x Version, egal wie sich die package.json ändert, npm I wird gemäß der Sperrdatei heruntergeladen
package-lock.json Datei, die nach package.json Änderung nicht aktualisiert wird · Ausgabe #16866 · NPM/NPM-https://github.com/npm/npm/issues/16866 Dieses Problem beschwert sich über dieses Problem, offensichtlich habe ich die package.json manuell geändert, warum gibst du mir nicht ein Upgrade-Paket! Und dann führt das zum Thema 5.1.0...
2. Nach Version 5.1.0 ignoriert die npm-Installation die Sperrdatei, um die neueste npm herunterzuladen
Dann hat jemand dieses Problem aufgeworfen: Warum wird Package-Lock ignoriert? · Ausgabe #17979 · NPM/NPM-https://github.com/npm/npm/issues/17979 Die Beschwerde entwickelte sich schließlich zu den Regeln nach Version 5.4.2.
3. Warum wird Package-Lock nach Version 5.4.2 ignoriert? · Ausgabe #17979 · NPM/NPM-https://github.com/npm/npm/issues/17979
Grob gesagt, wenn die package.json geändert wird und die package.json sich von der Sperrdatei unterscheidet, lädt npm beim Ausführen von 'npm i' das neueste Paket entsprechend Versionsnummer und semantischer Bedeutung des Pakets herunter und aktualisiert es auf Lock.
Wenn beide im gleichen Zustand sind, wird die Ausführung von npm I gemäß Lock heruntergeladen, unabhängig davon, ob die eigentliche Paketversion neu ist oder nicht.
|