Dies ist der Befehl npm-shrinkwrap, der im kostenlosen OnWorks-Hosting-Provider mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
npm-schrumpfverpackung - Abhängigkeitsversionen sperren
ZUSAMMENFASSUNG
npm-Schrumpffolie
BESCHREIBUNG
Dieser Befehl sperrt die Versionen der Abhängigkeiten eines Pakets, so dass Sie die Kontrolle haben
genau, welche Versionen jeder Abhängigkeit verwendet werden, wenn Ihr Paket installiert wird. Die
paket.json Datei ist weiterhin erforderlich, wenn Sie verwenden möchten npm installieren.
Standardmäßig npm installieren installiert rekursiv die Abhängigkeiten des Ziels (wie in
paket.json), Auswahl der neuesten verfügbaren Version, die die Abhängigkeiten erfüllt
semver Muster. In einigen Situationen, insbesondere beim Versand von Software, bei der jede Änderung
eng verwaltet wird, ist es wünschenswert, jede Version jeder Abhängigkeit vollständig zu spezifizieren
rekursiv, damit nachfolgende Builds und Bereitstellungen nicht versehentlich neuere aufnehmen
Versionen einer Abhängigkeit, die das semver-Muster erfüllen. Angabe eines bestimmten Servers
Muster in jeder Abhängigkeit paket.json würde das erleichtern, aber das ist nicht immer
möglich oder wünschenswert, wenn ein anderer Autor das npm-Paket besitzt. Es ist auch möglich
Überprüfen Sie Abhängigkeiten direkt in die Quellcodeverwaltung, aber das kann für andere unerwünscht sein
Gründe dafür.
Betrachten Sie als Beispiel Paket A:
{
"nennen Sie ein",
"Version": "0.1.0",
"Abhängigkeiten": {
"B": "<0.1.0"
}
}
Paket B:
{
"name": "B",
"Version": "0.0.1",
"Abhängigkeiten": {
"C": "<0.1.0"
}
}
und Paket C:
{
"name": "C",
"Version": "0.0.1"
}
Wenn dies die einzigen Versionen von A, B und C sind, die in der Registrierung verfügbar sind, dann ist ein normales npm
installieren A wird installieren:
[E-Mail geschützt]
`-- [E-Mail geschützt]
`-- [E-Mail geschützt]
Wie auch immer, wenn [E-Mail geschützt] veröffentlicht wird, dann ein frisches npm installieren A wird installieren:
[E-Mail geschützt]
`-- [E-Mail geschützt]
`-- [E-Mail geschützt]
vorausgesetzt, die neue Version hat die Abhängigkeiten von B nicht geändert. Natürlich ist die neue Version von B
könnte eine neue Version von C und eine beliebige Anzahl neuer Abhängigkeiten enthalten. Wenn solche Änderungen
unerwünscht, der Autor von A könnte eine Abhängigkeit von . spezifizieren [E-Mail geschützt] . Wenn jedoch der Autor von A
und der Autor von B nicht dieselbe Person sind, kann der Autor von A nicht sagen, dass er oder
sie will keine neu veröffentlichten Versionen von C einziehen, wenn sich B überhaupt nicht verändert hat.
In diesem Fall kann der Autor von A ausgeführt werden
npm-Schrumpffolie
Dies erzeugt npm-shrinkwrap.json, die in etwa so aussehen wird:
{
"nennen Sie ein",
"Version": "1.1.0",
"Abhängigkeiten": {
"B": {
"Version": "1.0.1",
"von": "B@^1.0.0",
"gelöst": "https://registry.npmjs.org/B/-/B-1.0.1.tgz",
"Abhängigkeiten": {
"C": {
"Version": "1.0.1",
"von": "org/C#v1.0.1",
"resolved": "git://github.com/org/C.git#5c380ae319fc4efe9e7f2d9c78b0faa588fd99b4"
}
}
}
}
}
Der Shrinkwrap-Befehl hat die Abhängigkeiten basierend auf dem, was aktuell ist, gesperrt
in installiert node_modules. Das Installationsverhalten wird geändert in:
1. Der durch die Schrumpffolie beschriebene Modulbaum wird nachgebildet. Dies bedeutet die Reproduktion der
in der Datei beschriebene Struktur unter Verwendung der spezifischen Dateien, auf die in "aufgelöst" verwiesen wird, wenn
verfügbar, mit "version" auf normale Paketauflösung zurückgreifen, falls nicht vorhanden.
2. Der Baum wird durchlaufen und alle fehlenden Abhängigkeiten werden auf die übliche Weise installiert.
Die richtigen eingeschweißt Pakete
Die Verwendung eines eingeschweißten Pakets unterscheidet sich nicht von der Verwendung eines anderen Pakets: Sie können npm
installieren es von Hand, oder fügen Sie eine Abhängigkeit zu Ihrem hinzu paket.json Datei-und npm installieren es.
zum eingeschweißt Pakete
So verpacken Sie ein vorhandenes Paket:
1. Führen npm installieren im Paket root, um die aktuellen Versionen von allen zu installieren
Abhängigkeiten.
2. Überprüfen Sie, ob das Paket mit diesen Versionen wie erwartet funktioniert.
3. Führen npm Schrumpffolie, Fügen npm-shrinkwrap.json zu git, und veröffentlichen Sie Ihr Paket.
So fügen Sie eine Abhängigkeit in einem eingeschweißten Paket hinzu oder aktualisieren sie:
1. Führen npm installieren im Paket root, um die aktuellen Versionen von allen zu installieren
Abhängigkeiten.
2. Abhängigkeiten hinzufügen oder aktualisieren. npm installieren --speichern jedes neue oder aktualisierte Paket
einzeln, um die . zu aktualisieren paket.json und die Schrumpffolie. Beachten Sie, dass sie sein müssen
explizit benannt, um installiert zu werden: läuft npm installieren ohne Argumente wird
lediglich die vorhandene Schrumpffolie reproduzieren.
3. Überprüfen Sie, ob das Paket mit den neuen Abhängigkeiten wie erwartet funktioniert.
4. Bestätigen Sie das Neue npm-shrinkwrap.json, und veröffentlichen Sie Ihr Paket.
Sie können npm help veraltet verwenden, um Abhängigkeiten mit neueren verfügbaren Versionen anzuzeigen.
Andere Notizen
Eine Schrumpfverpackungsdatei muss mit der des Pakets übereinstimmen paket.json Datei. npm Schrumpffolie
wird fehlschlagen, wenn die erforderlichen Abhängigkeiten nicht bereits installiert sind, da dies zu einem
Schrumpffolie, die nicht wirklich funktionieren würde. Ebenso schlägt der Befehl fehl, wenn
Fremdpakete (nicht referenziert von paket.json), da dies darauf hindeuten würde
paket.json das ist nicht richtig.
Da npm Schrumpffolie soll Ihre Abhängigkeiten für den Produktionseinsatz sperren,
devAbhängigkeiten wird nicht aufgenommen, es sei denn, Sie legen dies explizit fest --dev Flagge, wenn du rennst
npm Schrumpffolie. Falls installiert devAbhängigkeiten ausgeschlossen sind, gibt npm eine Warnung aus.
Wenn Sie möchten, dass sie standardmäßig mit Ihrem Modul installiert werden, ziehen Sie bitte in Betracht, sie hinzuzufügen
zu Abhängigkeiten stattdessen.
Wenn die eingeschweißte Verpackung A von der eingeschweißten Verpackung B abhängt, wird die Schrumpfverpackung von B nicht
als Teil der Installation von A verwendet. Da die Schrumpffolie von A jedoch aus
eine gültige Installation von B und spezifiziert rekursiv alle Abhängigkeiten, den Inhalt von B´s
Schrumpffolie wird implizit in die Schrumpffolie von A eingeschlossen.
Vorsichtsmaßnahmen
Wenn Sie die in einem Paket enthaltenen spezifischen Bytes sperren möchten, z
100 % Vertrauen, eine Bereitstellung oder einen Build reproduzieren zu können, dann sollten Sie es überprüfen
Ihre Abhängigkeiten in die Quellcodeverwaltung oder verfolgen Sie einen anderen Mechanismus, der dies überprüfen kann
Inhalt statt Versionen.
Verwenden Sie npm-shrinwrap online mit den onworks.net-Diensten