Heim > Artikel > Web-Frontend > Vertieftes Verständnis des NPM-Mechanismus
Dieser Artikel vermittelt Ihnen ein tiefgreifendes Verständnis des NPM-Mechanismus. Ich hoffe, dass er für Freunde in Not hilfreich ist.
Bei der Installation mit NPM treten häufig Paketkonflikte auf (z. B. inkonsistente Versionen von Untermodulen mehrerer Hauptmodule usw.), die während des Entwicklungsprozesses zu verschiedenen größeren oder kleineren Problemen führen. Alle folgenden Inhalte werden hier vorgestellt:
Verschiedene NPM-Installationsmethoden
npm install packageName[@next | @versionNumber]
npm install packageName --f | -- force
npm update packageName
NPM-Abfragedienst
npm view packageName [version]
Nachdem Sie den Befehl npm install eingegeben und die Eingabetaste gedrückt haben, können Sie loslegen durch die folgenden Schritte (am Beispiel von npm 5.5.1):
1. Führen Sie die Vorinstallation des Projekts selbst aus
Wenn der Vorinstallations-Hook definiert ist Das aktuelle NPM-Projekt wird zu diesem Zeitpunkt ausgeführt.
2. Bestimmen Sie das Abhängigkeitsmodul der ersten Ebene
Das erste, was Sie tun müssen, ist, die Abhängigkeit der ersten Ebene im Projekt zu bestimmen, also direkt in den Attributen dependencies
und devDependencies
Das angegebene Modul (vorausgesetzt, zu diesem Zeitpunkt werden keine npm-Installationsparameter hinzugefügt).
Das Projekt selbst ist der Wurzelknoten des gesamten Abhängigkeitsbaums. Jedes Abhängigkeitsmodul der ersten Ebene ist ein Unterbaum unter dem Wurzelknoten. npm startet mehrere Prozesse von jeder Abhängigkeit der ersten Ebene Das Modul beginnt nach und nach nach tieferen Knoten zu suchen.
Wenn das angegebene Modul bereits im Verzeichnis „node_modules“ der Abfrage vorhanden ist, wird es nicht neu installiert
3. Holen Sie sich das Modul.
Das Modul wird abgerufen a Der rekursive Prozess ist in die folgenden Schritte unterteilt:
Modulinformationen abrufen
Modulentität abrufen.
Suchen Sie nach Abhängigkeiten dieses Moduls
4. Modulabflachung (Deduplizierung)
Was in einem Schritt erhalten wird, ist ein vollständiger Abhängigkeitsbaum, der Lots enthalten kann von sich wiederholenden Modulen. Beispielsweise hängt Modul A von Loadsh ab und Modul B hängt auch von Lodash ab. Vor npm3 basierte die Installation streng auf der Struktur des Abhängigkeitsbaums, was zu Modulredundanz führte.
Ein Deduplizierungsprozess wird standardmäßig ab npm3 版本
hinzugefügt. Es durchläuft alle Knoten und platziert die Module einzeln unter dem Wurzelknoten, der die erste Ebene der Knotenmodule darstellt. Wenn doppelte Module gefunden werden, werden diese verworfen.
Hier müssen Sie ein doppeltes Modul definieren, das darauf verweist, dass der Modulname derselbe ist und Semver kompatibel ist. Jedes Segment entspricht einem zulässigen Versionsbereich. Wenn sich die zulässigen Versionsbereiche zweier Module überschneiden, kann eine kompatible Version erhalten werden, ohne dass genau dieselbe Versionsnummer erforderlich ist. Dies ermöglicht das Entfernen weiterer redundanter Module.
Zum Beispiel
Angenommen, ein Abhängigkeitsbaum sah ursprünglich so aus:
node_modules
-- foo
---- lodash@version1
-- bar
---- lodash@version2
Angenommen, dass Version1 und Version2 kompatible Versionen sind, wird es nach der Deduplizierung die folgende Form annehmen:
node_modules
-- foo
-- bar
-- lodash (die beibehaltene Version ist die kompatible Version)
Unter der Annahme, dass Version1 und Version2 inkompatible Versionen sind, werden die späteren Versionen in der Abhängigkeit beibehalten Baum:
node_modules
-- foo
-- lodash@version1
-- bar
---- lodash@version2
5. Modul installieren
Dieser Schritt aktualisiert node_modules im Projekt und führt die Lebenszyklusfunktionen im Modul aus (in der Reihenfolge Vorinstallation, Installation, Nachinstallation).
6. Führen Sie den eigenen Lebenszyklus des Projekts aus
Wenn für das aktuelle npm-Projekt ein Hook definiert ist, wird er zu diesem Zeitpunkt ausgeführt (in der Reihenfolge von Installation, Nachinstallation, Vorveröffentlichung und Vorbereitung).
Der letzte Schritt besteht darin, die Versionsbeschreibungsdatei zu generieren oder zu aktualisieren, und der npm-Installationsprozess ist abgeschlossen.
Dieser Artikel ist hier zu Ende. Weitere spannende Inhalte finden Sie in der Spalte JavaScript-Video-Tutorial auf der chinesischen PHP-Website!
Das obige ist der detaillierte Inhalt vonVertieftes Verständnis des NPM-Mechanismus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!