Dieser Artikel bietet Ihnen eine Einführung in die Versionsnummer der package.json-Bibliothek in Node.js. Ich hoffe, dass er für Freunde hilfreich ist.
~Der Unterschied zwischen ^
Ich bin in letzter Zeit auf einige Probleme gestoßen. Es funktioniert lokal gut, aber online treten Probleme auf, und ich kann sie auch lokal nicht reproduzieren . Später, nachdem ich das Verzeichnis node_modules gelöscht und neu installiert hatte, konnte ich mir den Git-Verlauf ansehen und stellte fest, dass niemand die Versionsnummer in package.json geändert hatte, also habe ich mir die Bibliothek im Paket genauer angesehen .json. Versionsnummer; der Unterschied zwischen
~ und ^
"babel-loader": "^7.1.1", "body-parser": "~1.15.2"
npm install --save xxx, gibt der Verwendung von ^
~
mit Versionsnummer x.y.z Zum Beispiel
y: Nebenversionsnummer, wenn Sie abwärtskompatible Funktionsprobleme vornehmen
z: Revisionsnummer, wenn Sie Probleme mit der Abwärtskompatibilität behoben
: ~1.15.2, diese Bibliothek stimmt mit der neuesten Version von 1.15.z überein, wenn Wenn 1.16.0 erscheint, ~x.y.z
body-parser
wird nicht automatisch aktualisiert, sondern auf die neueste Version von x aktualisiert, zum Beispiel
: ^7.1.1, diese Bibliothek entspricht der neuesten Version von 7.y.z , wenn 8.1.1, wird es nicht automatisch aktualisiert ^x.y.z
babel-loader
Sie können sich auf die offizielle Erklärung von npm beziehen
^0.2.3 := >=0.2.3 <0.3.0
^0.0.3 := >=0.0.3 <0.0.4
Befolgen Sie diese Versionsnummernregel In den meisten Fällen gibt es kein Problem mit den Abhängigkeitspaketen, aber npm ist eine Open-Source-Welt und nicht alle halten sich strikt an diese Regel, sodass die oben genannten Probleme auftreten
Es gibt mehrere mögliche Gründe: In einigen Fällen kann package.json nicht garantieren, dass die Abhängigkeitsversionen, die nach der Ausführung von npm install auf jedem eigenen Computer installiert werden, gleich sind
1 Wenn package.json Die Version des abhängigen Pakets ist ein Versionsbereich. Sobald npm i ausgeführt wird, wird das Paket auf die neueste Version aktualisiert2. Auch wenn Sie von einer festen Version des Pakets abhängig sind (z. B. A 1.1.1). ), aber Sie hängen möglicherweise von Paket A ab, und A kann bei der Deklaration von Abhängigkeiten auch Semser-Namen verwenden, z. B. ^1.2.3. Wenn Paket B eine neue Version veröffentlicht, führt dies auch zur Installation von Paket B zur aktualisierten Version
3. Verschiedene Versionen des npm-Programms, die von verschiedenen Personen verwendet werden
Wenn die Versionen abhängiger Pakete inkonsistent sind, führt dies zu inkonsistentem Verhalten zwischen der Entwicklungsumgebung und der Produktionsumgebung es kann zu Unterschieden in den Produktumgebungen verschiedener Teammitglieder führen
So lösen Sie das Problem inkonsistenter Paketversionen
1.npm Verwenden Sie package-lock.json Datei zur Lösung dieses Problems
Durch die Ausführung von npm install wird automatisch die Datei package.json generiert. Solange Sie normale Installationen, Aktualisierungen usw. durchführen, können npm-Befehle die Datei package.json und package-lock.json ändern Datei wird automatisch synchron geändert
npm install xxx npm rm xxx npm update xxx
2.npm unterstützt auch npm-shrinkwrap.json und package-lock Die .json-Funktion ist genau die gleiche
Ausführen
, um npm- zu generieren Shrinkwrap.jsonDieser Befehl erstellt eine neue oder überschreibt die vorhandene Datei npm-shrinkwrap.json basierend auf der Datei package-lock.json. Mit diesem Befehl erstellte und aktualisierte Dateien haben Vorrang vor allen anderen vorhandenen oder zukünftigen package-lock.json-Dateien. npm shrinkwrap
3. Garn verwenden
Die Verwendung von Garn hat die folgenden Hauptvorteile
Schnell: Jedes heruntergeladene Paket wird zwischengespeichert, ohne dass es wiederholt heruntergeladen werden muss parallel Zuverlässig mit maximaler Ressourcenauslastung[Verwandte Empfehlungen:JavaScript-Video-Tutorial
Das obige ist der detaillierte Inhalt vonEinführung in die Versionsnummer der Bibliothek in package.json in Node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!