Dieser Artikel führt Sie durch die beiden leistungsstarken Paketmanager von Node.js: npm und Yarn. Ich hoffe, er wird Ihnen hilfreich sein!

Node.js-Schnelleinführungskurs: Geben Sie ein, um zu lernen
Der erste Schritt zum Erlernen Node besteht darin, den Paketmanager von Node zu verstehen: npm . Ich glaube, jeder ist mit npm vertraut, da wir es häufig zum Herunterladen einiger Paketressourcen verwenden.
Da sich die Ressourcenbibliothek von npm (https://www.npmjs.com/) jedoch im Ausland befindet, ist die Geschwindigkeit beim Herunterladen von Ressourcen relativ langsam, sodass node包管理器von Drittanbietern wie yarn und Inland mit npm synchronisiert werden Lagerhäuser. Aktualisierter Taobao-Spiegel (cnpm)
Als nächstes lernen wir diese Inhalte eingehend kennen, fangen wir an!
Die Kolumne der Node-Serie wurde aktualisiert. Folgen Sie dem Blogger, abonnieren Sie die Kolumne und lernen Sie Node kennen, ohne sich zu verlaufen!
Was ist NPM?
Bevor Sie npm verwenden, müssen Sie zunächst verstehen, was npm ist. Im ersten Artikel der Node-Reihe wird erwähnt, npm um das Open-Source-Warehouse von Node handelt und ist das größte Open-Source-Warehouse der Welt
Die Adresse dieses Lagers lautet: https://www.npmjs.com/
Mit Stand vom 17. März 2020 lieferte npm 1,3 Millionen Pakete an etwa 12 Millionen Entwickler, die diese 75 Milliarden Mal pro Monat herunterluden
Um die Ressourcen im npm Warehouse herunterzuladen und zu verwenden, können Sie npm的指令verwenden (beginnend mit npm , z. B. npm i axios download axios ) oder andere Anweisungen von Drittanbietern ( Node包管理器von Drittanbietern), z. B. Garn usw .
Offizielle Aussage:
npmist ein Paketverwaltungs- und Verteilungstool fürNodeJSDie Paketverwaltung spiegelt sich darin wider, dass es sich um ein
NodeJS-Warehouse handelt, das verschiedeneNodeJS-Softwarepakete speichert und verwaltet.Das Verteilungstool besteht darin,
npm的指令zum Herunterladen von Paketen imnpm-Warehouse zu verwenden.
Wenn wir die NodeJS -Umgebung konfigurieren, wird npm指令模块zusammen mit NodeJS installiert. Wir können npm -v über das Terminal ausführen, um die installierte Version anzuzeigen:

Wenn die standardmäßig installierte npm Version jedoch zu alt ist, können Sie npm auch manuell selbst installieren und aktualisieren :
npm i npm@latest -g
@lateststeht für die Installation der neuesten Version,-gsteht für die globale Installation. Diesenpm-Anweisungen werden später besprochen.
Eine magische Sache finden Sie oben. Wir installieren npm über npm .
Das ist eigentlich leicht zu verstehen. npm的指令模块ist auch als Paket im npm -Warehouse gespeichert, und der Name dieses Pakets lautet npm . Siehe die npm -Adresse.

Was wir also allgemein als npm bezeichnen, bezieht sich lediglich auf das Befehlsmodul von npm (das Paket mit dem Namen npm).
Tatsächlich bezieht sich das Wort
npmjedoch aufnpm指令模块und auch aufnpmdasNodeJSOpen-Source-Warehouse selbst. Daher laden wirnpminnpmherunter (dieses npm stellt das Open-Source-Warehouse von NodeJS dar) (dieses npm stellt das Offene dar). Quelllager mit dem Namen npm Dieses Paket, dieses Paket ist das Befehlsmodul von npm)
Allgemeine npm-Befehle
Es gibt viele
npmAnweisungen. Hier listen wir nur die häufig verwendeten auf. Weitere Informationen finden Sie in der offiziellen NPM-Dokumentation.
:
npm initpackage.json generieren
npm install : Laden Sie alle in package.json aufgezeichneten Ressourcen herunter
npm install 包名: Laden Sie das angegebene Paket in das aktuelle Verzeichnis herunter
npm uninstall 包名: Deinstallieren Sie das angegebene Paket im aktuellen Verzeichnis
npm update 包名: Aktualisieren Sie das angegebene Paket im aktuellen Verzeichnis. Wenn kein Paketname hinzugefügt wird, werden alle Pakete im aktuellen Verzeichnis aktualisiert.
npm outdated 包名: Überprüfen Sie, ob das angegebene Paket im aktuellen Verzeichnis veraltet ist . Wenn kein Paketname hinzugefügt wird, werden alle Pakete im aktuellen Verzeichnis überprüft.
npm info 包名: Erhalten Sie detaillierte Informationen zum Paket im aktuellen Verzeichnis
npm list : Zeigt alle im aktuellen Verzeichnis installierten Pakete und ihre Abhängigkeiten an und zeigt die Versionsnummer an ( list kann als ls abgekürzt werden).
npm list 包名: Zeigt die Versionsnummer des angegebenen Pakets an, das im aktuellen Verzeichnis installiert ist ( list kann als ls abgekürzt werden).
Noch ein paar zusätzliche Punkte:
install kann als i abgekürzt werden, wie zum Beispiel: npm install axios kann als npm i axios abgekürzt werden
uninstall kann als un abgekürzt werden
Fügen Sie das @ -Symbol nach dem Paketnamen hinzu, um die Version des Pakets anzugeben, z. B.: npm i md5@1 lädt Version 1 von md5 herunter, npm i md5@latest bedeutet, dass die neueste Version von md5 heruntergeladen wird
npm Befehlssuffix
-g : Geben Sie die globale Umgebung an
Der Befehl
npmarbeitet standardmäßig im aktuellen Verzeichnis. Durch Hinzufügen von-gwird der Betrieb in der globalen Umgebung festgelegt. Installieren Sie wie oben erwähnt die neueste Version von npm:npm i npm@latest -g, damit npm in jedem Verzeichnis verwendet werden kann .
--save kann als -s abgekürzt werden : Abhängigkeiten in der Produktionsumgebung angeben (aufgezeichnet in dependencies )
Nach
npm5Version lautet der Standardwert--save. Axios muss beispielsweise sowohl in der Produktionsumgebung als auch in der Entwicklungsumgebung installiert werden:npm i axios -s
--save-dev kann als -D abgekürzt werden : Geben Sie die Abhängigkeiten in der Entwicklungsumgebung an (aufgezeichnet in devDependencies ).
So installieren Sie Babel, das in der Produktionsumgebung nicht benötigt wird (wird nur in der Entwicklungsumgebung verwendet):
npm i babel -D
--save-prod kann als -P abgekürzt werden : dasselbe wie --save
--save-optional kann als -O abgekürzt werden : optionale Abhängigkeiten angeben (aufgezeichnet in optionalDependencies )
--no-save : wird nicht in package.json aufgezeichnet
Informationen zu den spezifischen Funktionen und Unterschieden von
-g,--save,--save-devfinden Sie in meinem Artikel: Der Unterschied zwischen npm install -g/–save/–save-dev
Das npm-Befehlssuffix kann auch vor dem Paketnamen platziert werden:
npm i -g npm@latest
Verwaltung von Abhängigkeitspaketen
In npm sind die bekannten Abhängigkeiten: dependencies und devDependencies
Darüber hinaus umfasst es tatsächlich:
peerDependencies ,
optionalDependencies
bundledDependencies / bundleDependencies
Mehrere Abhängigkeiten, darunter diese, werden in package.json aufgezeichnet:

Oben haben wir diese Abhängigkeiten erwähnt, als wir über npm-Befehlssuffixe gesprochen haben. Hier finden Sie eine detaillierte Beschreibung ihrer Bedeutung:
dependencies und devDependencies
Schauen Sie sich meinen anderen Artikel an: Der Unterschied zwischen npm install -g/–save/–save-dev
peerDependencies
Sie können sich den Artikel des Großen ansehen: PeerDependencies in einem Artikel verstehen
optionalDependencies
Optionale Abhängigkeiten. Wenn es einige abhängige Pakete gibt, die auch dann noch ausgeführt werden können, wenn die Installation fehlschlägt oder Sie möchten, dass npm weiterhin ausgeführt wird, können Sie
optionalDependenciesverwenden. Darüber hinaus werdenoptionalDependenciesdie Abhängigkeiten mit demselben Namen independenciesüberschreiben Schreiben Sie sie an beiden Stellen.
bundledDependencies / bundleDependencies
Paketabhängigkeiten,
bundledDependenciesist ein Array-Objekt, das abhängige Paketnamen enthält. Beim Veröffentlichen werden die Pakete in diesem Objekt in das endgültige Release-Paket gepackt. Die Pakete im Array müssen zuerst indevDependenciesoderdependenciesdeklariert werden, andernfalls meldet das Paket ein Fehler.
Probleme mit der Paketversion, die in package.json beachtet werden müssen
Die Versionsinformationen aller über npm heruntergeladenen Pakete werden in package.json aufgezeichnet
Beim Ausführen npm i wird es basierend auf den in package.json aufgezeichneten Paketinformationen heruntergeladen. Die Download-Regeln lauten wie folgt:
Wenn die Paketversion mit ^ (Standard) beginnt , wird die große Version gesperrt
// package.json
"Abhängigkeiten": {
"md5": "^2.1.0" // } beginnend mit ^,Über
npm iwird die neueste Version vonmd52.xx(die neueste Version unter den beiden Hauptversionen) installiert, die nicht unbedingt 2.1.0 ist, sondern möglicherweise auch 2.3.0
Wenn die Paketversion mit ~ beginnt , wird sie an die zweite Hauptversion gebunden
// package.json
"Abhängigkeiten": {
„md5“: „~2.1.0“
},Über
npm idie neueste Version vonmd52.1.x(die neueste Version unter Version 2.1) installieren, die nicht unbedingt 2.1.0 ist, sondern möglicherweise auch 2.1.1
Die Paketversion ist * und wird auf die neueste Version beschränkt
// package.json
"Abhängigkeiten": {
„md5“: „*“
},Über
npm idie neueste Version vonmd5installieren
Wenn vor der Paketversion kein Präfix steht , wird sie auf die angegebene Version beschränkt.
// package.json
"Abhängigkeiten": {
„md5“: „2.1.0“
},Über
npm iVersion 2.1.0 vonmd5installieren
Lösen Sie das Problem der langsamen NPM-Geschwindigkeit
Da sich das npm Lager im Ausland befindet, ist es für uns langsamer, den Inhalt dieses ausländischen Lagers mit dem npm -Befehl in China herunterzuladen.
Zu diesem Zeitpunkt können wir den folgenden Befehl ausführen, um die npm Warehouse-Quelle auf die inländische Taobao-Image-Quelle (CNPM) umzustellen:
NPM-Konfigurationssatz-Registrierung https://registry.npmmirror.com
Verwenden Sie npm config get registry um die aktuelle Quelle anzuzeigen:

Wenn Sie npm in Zukunft verwenden, wird es automatisch aus dem inländischen Taobao-Spiegellager heruntergeladen und die Geschwindigkeit ist sehr hoch.
Die vorherige Quelladresse des Taobao-Spiegels war http://registry.npm.taobao.org, jetzt wurde sie in http://registry.npmmirror.com geändert. Details anzeigen
Aber es wird für uns zwangsläufig etwas mühsam sein, die Quelle durch Ändern der npm -Konfiguration zu wechseln. Wir können einen nrm global installieren, um uns dabei zu helfen, npm Quelle schnell zu wechseln.
Verwenden Sie nrm, um schnell zwischen NPM-Quellen zu wechseln
NRM global installieren :
npm install -g Nrm
Führen Sie nrm ls aus, um umschaltbare NPM-Quellen anzuzeigen :

Verwenden Sie npm use , um die Quelle zu wechseln , z. B. den Wechsel zur Taobao-Quelle: nrm use taobao

Verwenden Sie nrm test 源名um die Antwortzeit der entsprechenden Quelle zu testen:

Sie können sehen, dass die Reaktionsgeschwindigkeit der Taobao-Quelle viel schneller ist als die der Standardquelle von npm .
Chinesischer NPM-Spiegel: cnpm
cnpm ist ein vollständiger npmjs.org-Spiegel, der anstelle der offiziellen Version verwendet werden kann
Die Synchronisierungsfrequenz zwischen
cnpmund der offiziellen Version beträgt einmal alle 10 Minuten, offizielle Website von cnpm
cnpm herunterladen:
npm install -g cnpm --registry=https://registry.npmmirror.com
cnpm ist der Taobao-Spiegel . Wenn wir die Taobao- Spiegelquelle oben verwenden, ändern wir einfach die Quelle von npm in die Quelle des Taobao-Spiegels ( cnpm ) (diese Quelle bezieht sich tatsächlich auf die Adresse des Lagers) und verwenden sie dann durch der npm Befehl.
Und hier können Sie das vollständige Bild von cnpm direkt herunterladen . Anschließend können Sie cnpm anstelle des Befehls npm verwenden:
cnpm installcnpm i axios -g // ....
Die Anweisungen von
cnpmsind genau die gleichen wie die vonnpm. Verwenden Sie bei der Verwendung einfach cnpm anstelle von npm .
Yarn ist ein von Facebook veröffentlichtes Abhängigkeitsmanagement-Tool, das schneller und effizienter als npm ist
Installieren:
npm install -g Garn
Garn aktualisieren:
Garnset-Version aktuell Garnset-Version aus Quellen
Vorteil
super schnell
yarn speichert jedes heruntergeladene Paket zwischen, sodass es nicht erneut heruntergeladen werden muss, wenn es erneut verwendet wird. Nutzt außerdem parallele Downloads, um die Ressourcennutzung zu maximieren, sodass Installationen schneller sind
Super sicher <br/> Vor der Ausführung des Codes überprüft yarn die Integrität jedes Installationspakets durch einen Algorithmus
Allgemeine Garnanleitungen

yarn init : Initialisieren Sie das Projekt und generieren Sie die Datei package.json . Die Generierungsschritte sind ungefähr die gleichen wie bei npm init
yarn help : Befehlsliste anzeigen
yarn install : Laden Sie alle in package.json aufgezeichneten Ressourcen herunter, die als yarn abgekürzt werden können
yarn add 包名: Laden Sie das angegebene Paket in das aktuelle Verzeichnis herunter
yarn remove 包名: Deinstallieren Sie das angegebene Paket im aktuellen Verzeichnis
yarn upgrade 包名: Aktualisieren Sie das angegebene Paket im aktuellen Verzeichnis. Sie können nach dem Paketnamen die @指定版本号hinzufügen, um die Version anzugeben, die aktualisiert werden muss.
yarn
--dev : Geben Sie Abhängigkeiten in der Entwicklungsumgebung an ( devDependencies ), abgekürzt als -D
--peer : Kernabhängigkeiten angeben ( peerDependencies )
--optional : Geben Sie optionale Abhängigkeiten an ( optionalDependencies )
In diesem Artikel werden npm und yarn sowie von npm abgeleitete nrm , cnpm usw. vorgestellt
Blogger verwenden zum Wechseln der Quellen eine Kombination aus npm + nrm , da dies nicht nur eine hohe Geschwindigkeit gewährleistet, sondern auch einen bequemen Quellenwechsel ermöglicht, ohne dass zusätzliche Pakete wie cnpm und yarn
Sowohl npm als auch yarn enthalten viele Inhalte. In diesem Artikel werden nur die am häufigsten verwendeten Inhalte erläutert. Wenn Sie mehr wissen möchten, können Sie diese auf der entsprechenden offiziellen Website anzeigen.