Technologieaustausch

Paketmanager – Vergleich von npm, Yarn, cnpm, pnpm

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. npm (Knotenpaket verwalten)

1.1 Lokale Installation

Verwenden Sie den Befehl: npm install package name oder npm i package name
Lokal installierte Pakete werden im Verzeichnis „node_module“ unter dem aktuellen Verzeichnis angezeigt
Wenn das lokal installierte Paket über eine CLI verfügt, platziert npm sein CLI-Skript unter node_modules/.bin und ruft es mit dem Befehl npx auf.

1.2 Globale Installation

Global installierte Pakete werden in einem speziellen globalen Verzeichnis abgelegt.
Verwenden Sie den Befehl npm install --global package name oder npm i -g package name.
Das global installierte Paket ist nicht für alle Projekte verfügbar, es stellt nur globale CLI-Tools bereit. In den meisten Fällen ist es nicht erforderlich, das Paket global zu installieren.

1.3 Installationsbefehl

Abhängig von der Produktionsumgebung
npm i Paketname
npm i --save Paketname
npm i -S Paketname
Installieren Sie Abhängigkeiten in der Entwicklungsumgebung
npm i --save-dev Paketname
npm i -D Paketname

1.4. Wenn Sie nodejs zum Importieren eines Moduls verwenden und der Modulpfad nicht mit ./ oder .../ beginnt, geht Node davon aus, dass das importierte Modul aus dem Verzeichnis node_modules stammt.
1.5. npm-Skript

Konfigurieren Sie häufig verwendete CLI-Befehle im Skriptfeld von package.json und verwenden Sie den Namen des npm-Ausführungsskripts, um das Skript auszuführen. npx kann im Skript weggelassen werden.

2. Frühere Probleme mit npm:

  • Abhängigkeitsverzeichnisse sind tief verschachtelt: In der Vergangenheit waren npm-Abhängigkeiten verschachtelt und das Windows-System konnte zu tiefe Verzeichnisse nicht unterstützen.
  • Langsame Download-Geschwindigkeit: Aufgrund der tiefen Verschachtelungsebenen können Paket-Downloads nur seriell erfolgen; mehrere Pakete derselben Version werden wiederholt heruntergeladen.
  • Die Konsolenausgabe ist komplex: Es werden viele Paketdetails gedruckt
  • Problem bei der Projekttransplantation: In der Vergangenheit gab es nur die Konfigurationsdatei package.json, aber keine Datei package-lock.json.

3. Die Entstehung von Garn, weil es folgende Vorteile hat:

  • Verwenden Sie eine flache Verzeichnisstruktur
  • paralleler Download
  • Verwenden Sie den lokalen Cache
  • Optimieren Sie die Ausgabeinformationen der Konsole und geben Sie nur Schlüsselinformationen aus
  • Verwenden Sie die Garnsperrdatei, um genaue Abhängigkeiten aufzuzeichnen

4. Beeinflusst durch Garn griff npm6 auf die fortschrittlichen Konzepte von Garn zurück und nahm die folgenden Optimierungen vor:

  • Verzeichnisreduzierung
  • paralleler Download
  • lokaler Cache
  • Verwenden Sie package-lock.json, um genaue Abhängigkeiten aufzuzeichnen
  • Eine große Anzahl von Befehlsaliasen hinzugefügt
  • Integriertes Npx, Sie können lokale CLI-Tools starten
  • Vereinfacht die Konsolenausgabe erheblich

5. cnpm

Der Registrierungsserver von npm befindet sich im Ausland, was zu langsamen oder fehlgeschlagenen Downloads führen kann. In der Vergangenheit stellte npm keine eigene Registrierungsfunktion zur Verfügung, sondern der Taobao npm-Spiegel. Die anderen Verwendungszwecke sind im Wesentlichen die gleichen wie bei npm.

6. pnpm

  • Wie bei npm und Yarn wird der Cache weiterhin zum Speichern installierter Pakete verwendet.Verwenden Sie pnpm-lock.yaml, um detaillierte Abhängigkeitsversionen aufzuzeichnen
  • Im Gegensatz zu Yarn und NPM verwendet PNPM symbolische Links und Hardlinks, um Abhängigkeiten zu platzieren, das Kopieren von Dateien zu vermeiden, die Installationseffizienz zu verbessern und die Speicherplatznutzung erheblich zu reduzieren.
  • Durch die Verwendung von symbolischen Links und Hardlinks kann pnpm das Problem zu langer Pfade in Windows-Systemen vermeiden und nutzt daher Baumabhängigkeiten. Aufgrund der Baumabhängigkeiten können Projekte nur direkte Abhängigkeiten verwenden, keine indirekten Abhängigkeiten.

7. PNPM-Prinzip:

  • Das Wesen einer Datei: Die Datei ist eigentlich ein Zeiger, der auf eine externe Speicheradresse (Festplatte, USB-Stick) zeigt. Das Löschen einer Datei löscht tatsächlich den Zeiger und geht daher sehr schnell.
  • Kopie der Datei: Kopieren Sie den Inhalt, auf den der Dateizeiger zeigt, und generieren Sie dann einen neuen Zeiger, der auf den neuen Inhalt zeigt.
  • Hardlink: Kopieren Sie einen Datei-A-Zeiger auf einen anderen Datei-B-Zeiger. Datei B ist ein Hardlink auf Datei A.
  • Symbolischer Link (Softlink): Erstellen Sie einen symbolischen Link B für eine Datei oder einen Ordner A, dann zeigt B auf A.
  • Verknüpfung: Ähnlich einem symbolischen Link handelt es sich um eine von Windows in der Anfangszeit unterstützte Linkmethode. Sie ist nicht nur ein Zeiger, sondern enthält auch verschiedene Informationen wie Berechtigungen, Kompatibilität, Startmethode usw. Verknüpfungen gelten nur für Windows-Systeme und werden nicht plattformübergreifend verwendet.

Der Unterschied zwischen symbolischen Links und Hardlinks

  • Harte Links können nur Dateien verknüpfen, während symbolische Links Dateien und Verzeichnisse verknüpfen können.
  • Nach Abschluss der Verbindung ist der feste Link nur noch mit dem Dateiinhalt verknüpft und hat nichts mit dem vorherigen Link zu tun. Symbolische Links sind immer mit der zuvor verknüpften Datei verknüpft und nicht direkt mit der Inhaltsdatei verknüpft.