Heim Web-Frontend js-Tutorial Detaillierte Einführung in den Modulinstallationsmechanismus von npm

Detaillierte Einführung in den Modulinstallationsmechanismus von npm

Jun 26, 2017 am 10:54 AM
安装 机制 模块 详解

Die logische Struktur der Abhängigkeitsbaumoberfläche und die tatsächliche physische Struktur des Abhängigkeitsbaums
Die Oberfläche des Abhängigkeitsbaums Die logische Struktur stimmt nicht unbedingt mit der tatsächlichen physischen Struktur des Abhängigkeitsbaums überein!
Zwei Befehle sollten zuerst erwähnt werden: tree -d (Linux) und npm ls (npm)
Unter einem npm-Projekt:
tree -d BefehlListet die physischen Strukturen aller Abhängigkeiten unter einem Projekt in einem Baumdiagramm auf
npm ls-BefehlListet die logische Struktur aller Abhängigkeiten unter einem Projekt in einem Baumdiagramm auf
Nehmen Sie das offizielle Dokument als Beispiel:
Projektbeispiel1 hat zwei abhängige Module: Mod-A-Modul und Mod-C-Modul; >mod-a-Modul hat ein abhängiges Modul mod-b@1.0.0-Modul
mod-c-Modul hat ein abhängiges Modul mod-b@2.0.0 Die Ergebnisse von Modul
tree -d und npm ls lauten wie folgt: (Beachten Sie, dass die npm-Version npm3 statt npm2 ist)
Sehen Sie sich zunächst das Ergebnis im roten Feld unten an. Dies sollte das konsistenteste Ergebnis von Wir verstehen den Abhängigkeitsbaum von „
. Zuerst wird die Abhängigkeit der ersten Ebene unter dem Projekt gebildet – Mod-a-Modul und Mod-b-Modul. Dann werden diese beiden Module als übergeordnete Module und die zweite Ebene verwendet Abhängigkeitsmodul mod-b@1.0 wurde hinzugefügt .0 und mod-b@2.0.0
Aber! So sieht der physisch geformte Abhängigkeitsbaum nicht aus. Der physisch geformte Abhängigkeitsbaum ist das rote Kästchen oben. mod-a, mod-c und mod-b sind tatsächlich Abhängigkeiten derselben Ebene
.
Sie fragen sich vielleicht: Warum wird ein solcher Abhängigkeitsbaum gebildet? Lassen Sie es mich unten erklären
[Hinweis]: Bei den folgenden Abbildungen handelt es sich ausschließlich um physische Strukturen von Abhängigkeitsbäumen logische Struktur
Eine kleine Vermutung über den Installationsmechanismus des npm-Moduls
Bei der Installation eines Moduls gibt es zwei Möglichkeiten: horizontale Installation oder
verschachtelte
Installation (hier sind nur Vermutungen und Annahmen)
Kann die Installationsmethode vollständig horizontal sein? ——

Kann nicht

Nehmen wir ein ähnliches Beispiel wie oben: Es gibt zwei abhängige Module A und B unter dem Projekt APP. A hat ein abhängiges Modul Cv1.0 und B hat auch ein abhängiges Modul Cv2.0. Offensichtlich können sie nicht gleichzeitig unter denselben Knotenmodulen vorhanden sein. Aufgrund des Mechanismus von npm kann nur eine Version des abhängigen Moduls installiert werden. Eine davon überschreibt die andere.

Aber wenn wir nur eine Version des C-abhängigen Moduls installieren, kann dies dazu führen, dass Modul A und B-Modul ist nicht kompatibel
Basierend auf den oben genannten Gründen, npm2 wählte die verschachtelte Installationsmethode –
Modulinstallationsmechanismus unter npm2
npm2 installiert mehrstufige Abhängigkeitsmodule mithilfe einer verschachtelten Installationsmethode:
Vor- und Nachteile
Vorteile: Die Einzelversion wurde gelöst Erreichen Sie Kompatibilität mit mehreren Versionen
Nachteile: kann eine große Redundanz desselben Moduls verursachen ist wie folgt folgt:
Am Beispiel des obigen Beispiels ist auch die folgende Situation sinnvoll:
Ich weiß aus eigener Erfahrung, dass dies keineswegs ein gutes Phänomen ist. Wie können wir also diese Art von Modulredundanz reduzieren und gleichzeitig eine Multiversionskompatibilität zwischen Abhängigkeiten erreichen? Also hat npm3 einige Verbesserungen vorgenommen
Der Modulinstallationsmechanismus unter npm3:
Der Unterschied zwischen npm3 und npm2 spiegelt sich hauptsächlich in der Installation sekundärer Module wider:
npm3 wird „versuchen“ Logischerweise werden Module auf einer bestimmten Ebene hinsichtlich der physischen Struktur auf der ersten Ebene des Projekts platziert „Alle“
1 . Wenn Sie bei der Installation eines bestimmten Moduls der zweiten Ebene feststellen, dass es auf der ersten Ebene
kein Modul mit demselben Namen gibt , geben Sie dies ein Modul der zweiten Ebene auf der ersten Ebene 2. Während der Installation Wenn ein Modul der zweiten Ebene gefunden wird, wenn die erste Ebene wird festgestellt, dass es denselben Namen und dieselbe Version des Moduls hat
, dann dieses Modul direkt wiederverwenden 3 Bestimmtes Modul der zweiten Ebene, wenn die erste Ebene gefunden wird hat denselben Namen, aber unterschiedliche Versionen von Modulen , sodass
nur darunter verschachtelt werden kann eigenes übergeordnetes Modul
Das mag zunächst etwas schwer zu verstehen sein, also schauen wir uns die Bilder an und lassen Sie uns reden!
Lassen Sie mich mit 1 beginnen: Wenn Sie ein Modul der zweiten Ebene installieren, wenn Sie feststellen, dass das erste -Level-Modul wurde nicht verwendet. Für Module mit demselben Namen platzieren Sie dieses Modul der zweiten Ebene auf der ersten Ebene
Vereinfachen wir zunächst das obige Beispiel: Jetzt da ist nur eines unter dem Projekt APP Das Abhängigkeitsmodul A der ersten Ebene verfügt über ein Abhängigkeitsmodul C der zweiten Ebene, aber bei der Installation von npm wird die Abhängigkeit unter dem Projekt

Das Modul der zweiten Ebene (C v1.0) in npm3, wenn im Verzeichnis der ersten Ebene (node_modules) des Projekts kein Modul mit demselben Namen vorhanden ist, wird im Verzeichnis der ersten Ebene installiert und folgt somit dem übergeordneten Modul A derselben Ebene. Aus diesem Grund sind die logische Struktur und die physische Struktur des Abhängigkeitsbaums am Anfang dieses Artikels unterschiedlich .
Mit anderen Worten:
In npm2, The Die logische Struktur des Abhängigkeitsbaums ist dieselbe wie seine physische Struktur.
In npm3 ist die logische Struktur des Abhängigkeitsbaums dieselbe als seine physikalische Struktur. Anders
Weitere 2: Bei der Installation eines bestimmten Sekundärmoduls, wenn das erste Für Module mit demselben Namen und derselben Version auf der Ebene können wir dieses Modul direkt wiederverwenden
Auf Auf der Grundlage von 1 stellen wir das vorherige, kompliziertere Szenario wieder her: Es gibt zwei abhängige Module A und B unter dem Projekt APP. A hat ein abhängiges Modul Cv1.0 und B hat auch ein abhängiges Modul C v1 .0 (zwei C Die Modulversion ist gleich)

Für npm2 sind die beiden C-Pakete sind gleich, was zu Modulredundanz führt.
Da in npm3 Modul C unter Modul A auf der ersten Ebene installiert ist, kann Modul B auf derselben Ebene wiederverwendet werden. und der Name, die Version, alle die gleichen C-Module
npm3 verwendet diese Methode, um die Schwachstellen (teilweise) von npm2 teilweise zu lösen
[Übergang von 1, 2 zu 3] Ich habe am Anfang dieses Abschnitts gesagt: „npm3 wird es logischerweise „versuchen“. „Alle“ Level-Module werden in der ersten Ebene des Projekts platziert“, Ich denke, Sie sollten etwas verstehen, nachdem Sie 1 und 2 gelesen haben „Geben Sie Ihr Bestes“ Ja, aber Ich sagte „Versuchen Sie Ihr Bestes“ , was auch bedeutet, dass npm3 keine Abhängigkeiten der zweiten Ebene auf der ersten Ebene platzieren kann . Siehe dazu bitte 3:
Schließlich 3: Bei der Installation eines bestimmten Sekundärmoduls, wenn die zweiten Module mit Der gleiche Name, aber unterschiedliche Versionen auf einer Ebene können nur unterhalb ihres eigenen übergeordneten Moduls verschachtelt werden
In 2 sind die beiden C-Module, von denen A und B abhängen, gleich. Aber was ist, wenn die Versionen der beiden C-Module unterschiedlich sind? , die Projekt-npm-Installationssituation ist wie folgt:

in npm3, weil B und A require Die abhängigen Module sind unterschiedlich (die Anforderung unter B ist C von v1.0 und die Anforderung unter A ist C von v2.0), sodass B das C v1.0-Modul unter A nicht wie in 2
(Wenn ich das sehe, denke ich, dass es Ihre Zweifel an dem Beispiel am Anfang des Artikels ausräumen sollte. Dieses Beispiel ist fast genau das gleiche wie dieses Beispiel)
Wenn Sie dies sehen, haben Sie ein allgemeines Verständnis des Modularbeitsmechanismus unter npm2 und npm3 sowie der Optimierung von npm3 für npm2, aber bitte Denken Sie über diese Frage nach: Hat npm3 die Modulredundanzfehler von npm2 bis zum Äußersten optimiert? ———Die Antwort ist Nein , bitte lesen Sie unten:
Eigentlich: Modulredundanz kann in npm3 immer noch auftreten, da sich im Verzeichnis der ersten Ebene bereits ein v1.0-C-Modul befindet, Also Alle v2.0 können nur als sekundäre Abhängigkeitsmodule installiert werden, sodass Sie die folgende Situation sehen werden

Und im oben gezeigten Sonderfall scheint es keinen Unterschied zwischen npm3 und npm2 zu geben
【Übergang】Gibt es eine Lösung dafür? Natürlich gibt es das. Wenn das C v1.0-Modul unter A-Modul auf C v2.0 aktualisiert wird, können wir alle C v2.0-sekundär abhängigen Module durch npm-Deduplizierung auf C v2.0 „umleiten“. .0 im Verzeichnis der ersten Ebene
Verwenden Sie npm dedupe, um redundante Module zu entfernen:
Was hat die NPM-Deduplizierung bewirkt? Es kann alle redundanten abhängigen Module der zweiten Ebene, die entfernt werden können, zu Modulen der ersten Ebene mit dem gleichen Namen/der gleichen Version „umleiten“

Referenzen npm offizielles Dokument Abschnitt 2 (wie npm funktioniert):
[Warme Erinnerung]: Kein beliebter Blog kann mit einem schweren Buch und einem langweiligen Dokument mithalten
【Ende】
Merken Sie sich jeden Tag 10 kleine Wörter, das Wichtigste ist: Ansammeln!
Speicher: Speicherabhängigkeit: Abhängigkeitseinschränkungen: Einschränkungen Bereitstellung: Bereitstellungsparameter: Parameterbereich: Bereich
Ökosysteme: Ökosystempräfix: Präfix Prior: Priorität/bevor widerrufen: widerrufen
 

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Modulinstallationsmechanismus von npm. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Lösung für das Problem, dass das chinesische Sprachpaket nicht auf einem Win11-System installiert werden kann Lösung für das Problem, dass das chinesische Sprachpaket nicht auf einem Win11-System installiert werden kann Mar 09, 2024 am 09:48 AM

Lösung für das Problem, dass das Win11-System das chinesische Sprachpaket nicht installieren kann. Mit der Einführung des Windows 11-Systems begannen viele Benutzer, ihr Betriebssystem zu aktualisieren, um neue Funktionen und Schnittstellen zu nutzen. Einige Benutzer stellten jedoch fest, dass sie das chinesische Sprachpaket nach dem Upgrade nicht installieren konnten, was ihre Erfahrung beeinträchtigte. In diesem Artikel besprechen wir die Gründe, warum das Win11-System das chinesische Sprachpaket nicht installieren kann, und stellen einige Lösungen bereit, die Benutzern bei der Lösung dieses Problems helfen. Ursachenanalyse Lassen Sie uns zunächst die Unfähigkeit des Win11-Systems analysieren

Gastzusätze können in VirtualBox nicht installiert werden Gastzusätze können in VirtualBox nicht installiert werden Mar 10, 2024 am 09:34 AM

Möglicherweise können Sie keine Gastzusätze zu einer virtuellen Maschine in OracleVirtualBox installieren. Wenn wir auf Geräte>InstallGuestAdditionsCDImage klicken, wird einfach ein Fehler wie unten gezeigt ausgegeben: VirtualBox – Fehler: Virtuelles Laufwerk C kann nicht eingefügt werden: DateienOracleVirtualBoxVBoxGuestAdditions.iso in die Ubuntu-Maschine programmieren In diesem Beitrag werden wir verstehen, was passiert, wenn Sie. Was zu tun ist, wenn Sie Gastzusätze können in VirtualBox nicht installiert werden. Gastzusätze können nicht in VirtualBox installiert werden. Wenn Sie es nicht in Virtua installieren können

Was soll ich tun, wenn Baidu Netdisk erfolgreich heruntergeladen wurde, aber nicht installiert werden kann? Was soll ich tun, wenn Baidu Netdisk erfolgreich heruntergeladen wurde, aber nicht installiert werden kann? Mar 13, 2024 pm 10:22 PM

Wenn Sie die Installationsdatei von Baidu Netdisk erfolgreich heruntergeladen haben, sie aber nicht normal installieren können, liegt möglicherweise ein Fehler in der Integrität der Softwaredatei vor oder es liegt ein Problem mit den verbleibenden Dateien und Registrierungseinträgen vor Lassen Sie uns die Analyse des Problems vorstellen, dass Baidu Netdisk erfolgreich heruntergeladen, aber nicht installiert werden kann. Analyse des Problems, dass Baidu Netdisk erfolgreich heruntergeladen, aber nicht installiert werden konnte 1. Überprüfen Sie die Integrität der Installationsdatei: Stellen Sie sicher, dass die heruntergeladene Installationsdatei vollständig und nicht beschädigt ist. Sie können es erneut herunterladen oder versuchen, die Installationsdatei von einer anderen vertrauenswürdigen Quelle herunterzuladen. 2. Deaktivieren Sie Antivirensoftware und Firewall: Einige Antivirensoftware oder Firewallprogramme verhindern möglicherweise die ordnungsgemäße Ausführung des Installationsprogramms. Versuchen Sie, die Antivirensoftware und die Firewall zu deaktivieren oder zu beenden, und führen Sie dann die Installation erneut aus

Wie installiere ich Android-Apps unter Linux? Wie installiere ich Android-Apps unter Linux? Mar 19, 2024 am 11:15 AM

Die Installation von Android-Anwendungen unter Linux war für viele Benutzer schon immer ein Problem. Insbesondere für Linux-Benutzer, die gerne Android-Anwendungen verwenden, ist es sehr wichtig, die Installation von Android-Anwendungen auf Linux-Systemen zu beherrschen. Obwohl die direkte Ausführung von Android-Anwendungen unter Linux nicht so einfach ist wie auf der Android-Plattform, können wir mithilfe von Emulatoren oder Tools von Drittanbietern Android-Anwendungen unter Linux dennoch problemlos genießen. Im Folgenden wird erläutert, wie Android-Anwendungen auf Linux-Systemen installiert werden.

Ausführliche Erklärung zur Erlangung von Administratorrechten in Win11 Ausführliche Erklärung zur Erlangung von Administratorrechten in Win11 Mar 08, 2024 pm 03:06 PM

Das Windows-Betriebssystem ist eines der beliebtesten Betriebssysteme der Welt und seine neue Version Win11 hat viel Aufmerksamkeit erregt. Im Win11-System ist die Erlangung von Administratorrechten ein wichtiger Vorgang. Mit Administratorrechten können Benutzer weitere Vorgänge und Einstellungen auf dem System durchführen. In diesem Artikel wird ausführlich beschrieben, wie Sie Administratorrechte im Win11-System erhalten und wie Sie Berechtigungen effektiv verwalten. Im Win11-System werden Administratorrechte in zwei Typen unterteilt: lokaler Administrator und Domänenadministrator. Ein lokaler Administrator verfügt über vollständige Administratorrechte für den lokalen Computer

Detaillierte Erläuterung der Divisionsoperation in Oracle SQL Detaillierte Erläuterung der Divisionsoperation in Oracle SQL Mar 10, 2024 am 09:51 AM

Detaillierte Erläuterung der Divisionsoperation in OracleSQL In OracleSQL ist die Divisionsoperation eine häufige und wichtige mathematische Operation, die zur Berechnung des Ergebnisses der Division zweier Zahlen verwendet wird. Division wird häufig in Datenbankabfragen verwendet. Daher ist das Verständnis der Divisionsoperation und ihrer Verwendung in OracleSQL eine der wesentlichen Fähigkeiten für Datenbankentwickler. In diesem Artikel werden die relevanten Kenntnisse über Divisionsoperationen in OracleSQL ausführlich erörtert und spezifische Codebeispiele als Referenz für die Leser bereitgestellt. 1. Divisionsoperation in OracleSQL

So installieren Sie Podman unter Ubuntu 24.04 So installieren Sie Podman unter Ubuntu 24.04 Mar 22, 2024 am 11:26 AM

Wenn Sie Docker verwendet haben, müssen Sie Daemons, Container und ihre Funktionen verstehen. Ein Daemon ist ein Dienst, der im Hintergrund läuft, wenn ein Container bereits in einem System verwendet wird. Podman ist ein kostenloses Verwaltungstool zum Verwalten und Erstellen von Containern, ohne auf einen Daemon wie Docker angewiesen zu sein. Daher bietet es Vorteile bei der Verwaltung von Containern, ohne dass langfristige Backend-Dienste erforderlich sind. Darüber hinaus erfordert Podman keine Root-Berechtigungen. In dieser Anleitung wird ausführlich erläutert, wie Sie Podman auf Ubuntu24 installieren. Um das System zu aktualisieren, müssen wir zunächst das System aktualisieren und die Terminal-Shell von Ubuntu24 öffnen. Sowohl während des Installations- als auch des Upgrade-Vorgangs müssen wir die Befehlszeile verwenden. eine einfache

So installieren und führen Sie die Ubuntu Notes-App unter Ubuntu 24.04 aus So installieren und führen Sie die Ubuntu Notes-App unter Ubuntu 24.04 aus Mar 22, 2024 pm 04:40 PM

Während des Lernens in der Oberstufe machen sich einige Schüler sehr klare und genaue Notizen und machen sich mehr Notizen als andere in derselben Klasse. Für manche ist das Notieren ein Hobby, für andere ist es eine Notwendigkeit, wenn sie leicht kleine Informationen über etwas Wichtiges vergessen. Die NTFS-Anwendung von Microsoft ist besonders nützlich für Studierende, die wichtige Notizen außerhalb der regulären Vorlesungen speichern möchten. In diesem Artikel beschreiben wir die Installation von Ubuntu-Anwendungen auf Ubuntu24. Aktualisieren des Ubuntu-Systems Vor der Installation des Ubuntu-Installationsprogramms müssen wir auf Ubuntu24 sicherstellen, dass das neu konfigurierte System aktualisiert wurde. Wir können das bekannteste „a“ im Ubuntu-System verwenden

See all articles