Einführung in die NPM-Nutzung

NPM (Node Package Manager) ist ein JavaScript-Paketverwaltungswerkzeug und der Standard-Paketmanager für Node.js.

NPM ermöglicht Entwicklern, Projektabhängigkeiten und Tools einfach herunterzuladen, zu installieren, zu teilen und zu verwalten.

NPM ist ein mit Node.js gebündeltes Paketverwaltungswerkzeug. Daher müssen Sie normalerweise nur Node.js installieren, und NPM wird automatisch auf Ihrem System installiert.

Hauptfunktionen:

  • Paketverwaltung: NPM hilft Ihnen, verschiedene von Ihrem Projekt benötigte Bibliotheken von Drittanbietern (Pakete) zu installieren und zu verwalten. Zum Beispiel können Sie Abhängigkeiten mit einfachen Befehlen installieren, aktualisieren oder löschen.

  • Versionsverwaltung: NPM unterstützt Versionskontrolle, sodass Sie eine bestimmte Version einer Abhängigkeit sperren oder je nach Bedarf die neueste Version auswählen können.

  • Paketveröffentlichung: NPM ermöglicht Entwicklern, ihre eigenen Bibliotheken in der NPM-Registry zu veröffentlichen, und andere Entwickler können diese Bibliotheken über NPM herunterladen und verwenden.

  • Kommandozeilenwerkzeug: NPM bietet ein leistungsstarkes Kommandozeilenwerkzeug, das für verschiedene Operationen wie das Installieren von Paketen, das Ausführen von Skripten, das Initialisieren von Projekten und mehr verwendet werden kann.

Da die neueste Version von Node.js NPM bereits enthält, können wir es direkt testen, indem wirnpm -veingeben, um zu prüfen, ob es erfolgreich installiert wurde. Wenn eine Versionsanzeige erscheint, war die Installation erfolgreich:

$ npm -v
2.3.0

Wenn Sie eine ältere Version von npm installiert haben, können Sie sie einfach mit dem npm-Befehl aktualisieren. Der Befehl lautet wie folgt:

$ sudo npm install npm -g
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
[email protected] /usr/local/lib/node_modules/npm

Wenn Sie ein Windows-System verwenden, können Sie den folgenden Befehl verwenden:

npm install npm -g

Verwendung von npm-Befehlen zum Installieren von Modulen

Die Syntax für npm zum Installieren eines Node.js-Moduls lautet wie folgt:

$ npm install <Module Name>

Im folgenden Beispiel verwenden wir den npm-Befehl, um ein gängiges Node.js-Webframework-Modul zu installieren.express:

$ npm install express

Nach der Installation wird das express-Paket im Verzeichnis node_modules unter dem Projektverzeichnis abgelegt. Daher müssen Sie in Ihrem Code nurrequire('express')auf diese Weise verwenden; es ist nicht nötig, den Pfad zum Drittanbieterpaket anzugeben.

var express = require('express');

Globale Installation vs. lokale Installation

Die npm-Paketinstallation wird in zwei Arten unterteilt: lokale Installation und globale Installation. Aus Sicht der Kommandozeile ist der einzige Unterschied, ob ein-gParameter vorhanden ist.

Lokale Installation:Installiert das Paket im Verzeichnis node_modules und speichert die Informationen im dependencies-Feld in package.json.

npm install express          # 本地安装

Globale Installation:Wird verwendet, um Befehlszeilentools oder Pakete zu installieren, die in mehreren Projekten verwendet werden müssen.

npm install express -g   # 全局安装

Wenn der folgende Fehler auftritt:

npm err! Error: connect ECONNREFUSED 127.0.0.1:8087 

Die Lösung ist:

$ npm config set proxy null

Lokale Installation

  • Geltungsbereich: Standardmäßig installiert npm das Paket imnode_modulesOrdner des aktuellen Projekts. Das bedeutet, jedes Projekt, das das Paket verwendet, hat seine eigene Kopie des Pakets.

  • Zweck: Die lokale Installation wird typischerweise für Projektabhängigkeiten verwendet. Jedes Projekt kann seine eigenen Abhängigkeitsversionen haben, was dazu beiträgt, Projektstabilität und Reproduzierbarkeit sicherzustellen.

  • Installationsbefehl: Im Projektverzeichnis ausführennpm install <package-name>installiert das Paket in dennode_modulesOrdner, undpackage.jsonfügt die Abhängigkeit zur Datei hinzu.

  • Versionsverwaltung: Über diepackage.jsonundpackage-lock.jsonDatei können Sie Abhängigkeitsversionen verwalten, um Konsistenz über verschiedene Umgebungen hinweg sicherzustellen.

Globale Installation

  • Geltungsbereich: Die globale Installation installiert Pakete in einem Verzeichnis auf Systemebene, normalerweise/usr/local/bin(unter Unix-ähnlichen Systemen) oder%AppData%\npm(unter Windows).

  • Zweck: Die globale Installation wird für Tools oder Kommandozeilen-Dienstprogramme verwendet, die nicht in jedem Projekt wiederholt installiert werden müssen. Zum Beispiel die Installation eines globalencreate-react-appkann verwendet werden, um neue React-Projekte zu erstellen.

  • Installationsbefehl: Verwenden Sie den-gFlag, um Pakete global zu installieren, zum Beispielnpm install -g <package-name>。

  • Versionsverwaltung: Die Versionen global installierter Pakete werden von npm verwaltet, aber sie werden nichtpackage.jsonim Projekt widergespiegelt. Das bedeutet, global installierte Pakete können zwischen verschiedenen Projekten gemeinsam genutzt werden, aber sie können auch aufgrund von Versionskonflikten Probleme verursachen.

FunktionenLokale InstallationGlobale Installation
InstallationsumfangNur im aktuellen Projekt verfügbarIn der systemweiten globalen Umgebung verfügbar
Befehlsverwendungnpm install package-namenpm install -g package-name
Installationsortnode_modulesVerzeichnis sichernSystemweites globales Verzeichnis (variiert je nach Betriebssystem)
AnwendungsfälleProjektabhängigkeiten (Bibliotheken, Frameworks)CLI-Tools, Projektgeneratoren
ZugriffsmethodeDurchrequire()oderimportusingDirekt in der Befehlszeile verwendet
AbhängigkeitsdeklarationInpackage.jsoneingetragen innotpackage.jsoneingetragen in
VersionskontrolleIn verschiedenen Projekten können unterschiedliche Versionen verwendet werdenIm System wird nur eine Version vorgehalten
BerechtigungsproblemeKeine speziellen Berechtigungen erforderlichErfordert möglicherweise Administratorberechtigungen

Wenn Sie beide Funktionalitäten haben möchten, müssen Sie es an beiden Stellen installieren oder verwenden Sienpm link。

Als Nächstes werden wir express global installieren

$ npm install express -g

Der Installationsvorgang gibt den folgenden Inhalt aus; die erste Zeile zeigt die Versionsnummer und den Installationsort des Moduls.

[email protected] node_modules/express
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])

Installierte Informationen anzeigen

Mit dem folgenden Befehl können Sie alle global installierten Module anzeigen:

$ npm list -g

├─┬ [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
……

Um die Versionsnummer eines bestimmten Moduls anzuzeigen, können Sie den folgenden Befehl verwenden:

$ npm list grunt

projectName@projectVersion /path/to/project/folder
└── [email protected]

Module deinstallieren

Wir können den folgenden Befehl verwenden, um ein Node.js-Modul zu deinstallieren.

$ npm uninstall express

Nach der Deinstallation können Sie zum Verzeichnis /node_modules/ gehen, um zu prüfen, ob das Paket noch existiert, oder den folgenden Befehl zur Überprüfung verwenden:

$ npm ls

Module aktualisieren

Wir können den folgenden Befehl verwenden, um ein Modul zu aktualisieren:

$ npm update express

Module suchen

Verwenden Sie Folgendes, um nach Modulen zu suchen:

$ npm search express

Module erstellen

Um ein Modul zu erstellen, ist die Datei package.json unerlässlich. Wir können NPM verwenden, um eine package.json-Datei zu generieren, und die generierte Datei enthält das grundlegende Ergebnis.

$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (node_modules) example                   # 模块名
version: (1.0.0) 
description: Node.js 测试模块(www.example.com)  # 描述
entry point: (index.js) 
test command: make test
git repository: https://github.com/example/example.git  # Github 地址
keywords: 
author: 
license: (ISC) 
About to write to ……/node_modules/package.json:      # 生成地址

{
  "name": "example",
  "version": "1.0.0",
  "description": "Node.js 测试模块(www.example.com)",
  ……
}


Is this ok? (yes) yes

Sie müssen die oben genannten Informationen entsprechend Ihrer eigenen Situation eingeben. Nachdem Sie am Ende "yes" eingegeben haben, wird eine package.json-Datei generiert.

Als Nächstes können wir den folgenden Befehl verwenden, um einen Benutzer in der npm-Registry zu registrieren (Registrierung mit einer E-Mail-Adresse):

$ npm adduser
Username: mcmohd
Password:
Email: (this IS public) [email protected]

Als Nächstes verwenden wir den folgenden Befehl, um das Modul zu veröffentlichen:

$ npm publish

Wenn alle oben genannten Schritte korrekt ausgeführt wurden, können Sie npm verwenden, um es genau wie andere Module zu installieren.


Versionsnummer

Wenn Sie NPM zum Herunterladen und Veröffentlichen von Code verwenden, werden Sie auf Versionsnummern stoßen. NPM verwendet semantische Versionsnummern zur Verwaltung von Code. Hier ist eine kurze Einführung.

Versionsnummern folgen der semantischen Versionierung (SemVer) mit dem Format MAJOR.MINOR.PATCH und können zusätzliche Labels tragen.

  • MAJOR (Hauptversion): Wird erhöht, wenn Sie inkompatible API-Änderungen vornehmen. Zum Beispiel:2.0.0。
  • MINOR (Nebenversion): Wird erhöht, wenn Sie neue Funktionalität hinzufügen und dabei die Abwärtskompatibilität wahren. Zum Beispiel:1.1.0。
  • PATCH (Patch-Version): Wird erhöht, wenn Sie Fehler beheben, ohne neue Funktionalität hinzuzufügen. Zum Beispiel:1.0.1。

Zusätzliche Labels

  • Vorabversion: wie zum Beispiel1.0.0-alphaoder1.0.0-beta.1, was bedeutet, dass diese Version noch getestet wird.
  • Build-Metadaten: wie zum Beispiel1.0.0+build.1, das Informationen über den Build bereitstellt.

Installationsbeispiele

  • Eine bestimmte Version installieren:npm install [email protected]
  • Die neueste Hauptversion installieren:npm install package-name@^1.2.3(installiere1.x.xdie neueste Version von)

Häufige NPM-Befehle

NPM bietet viele Befehle. Du kannstnpm helpverwenden, um alle Befehle anzuzeigen.

BefehlBeschreibung
npm initInitialisiere eine neuepackage.jsonDatei, wobei Informationen interaktiv eingegeben werden.
npm init -yErstelle schnell einepackage.jsonDatei mit Standardeinstellungen.
npm install package-nameInstalliere das angegebene Paket lokal.
npm install -g package-nameInstalliere das angegebene Paket global, sodass es systemweit verfügbar ist.
npm installInstallationpackage.jsonalle aufgeführten Abhängigkeiten in
npm install package-name --save-devInstalliere ein Paket und füge es zudevDependencies。
npm update package-nameAktualisiere das angegebene Abhängigkeitspaket.
npm uninstall package-nameDeinstalliere das angegebene Abhängigkeitspaket.
npm uninstall -g package-nameDeinstalliere das angegebene Paket global.
npm listZeige die Liste der installierten Abhängigkeitspakete für das aktuelle Projekt an.
npm list -g --depth=0Zeige die Liste der global installierten Abhängigkeitspakete an (ohne den Abhängigkeitsbaum aufzuklappen).
npm info package-nameZeige detaillierte Informationen zu einem Paket an, einschließlich Version und Abhängigkeiten.
npm loginMelde dich bei deinem NPM-Konto an.
npm publishVeröffentliche das aktuelle Paket in der NPM-Registry.
npm unpublish package-nameVeröffentlichung eines Pakets aus der NPM-Registry rückgängig machen (in der Regel auf innerhalb von 24 Stunden beschränkt).
npm cache clean --forceDen NPM-Cache bereinigen.
npm auditProjektabhängigkeiten auf Sicherheitslücken prüfen.
npm audit fixBekannte Sicherheitslücken automatisch beheben.
npm run script-nameFühren Siepackage.jsondas darin definierte Skript, zum Beispielnpm run start。
npm startFühren SiestartSkript (entsprichtnpm run start)。
npm testFühren SietestSkript.
npm buildFühren SiebuildSkript.
npm outdatedAbhängigkeitspakete im Projekt auflisten, für die Updates verfügbar sind.
npm version patch/minor/majorUpdatepackage.jsondie Versionsnummer in , wobei die Version automatisch aktualisiert wird.
npm ciVerwenden Siepackage-lock.jsonzum schnellen Installieren von Abhängigkeiten, geeignet für CI/CD-Umgebungen.

Neben dem, was in diesem Kapitel behandelt wird, bietet NPM viele weitere Funktionen, und package.json hat auch viele andere nützliche Felder.

Neben der Möglichkeit, die offizielle Dokumentation unterhttps://docs.npmjs.com/einzusehen, finden Sie hier einige weitere häufig verwendete NPM-Befehle.


Verwendung des Taobao-NPM-Mirrors

Da die direkte Verwendung des offiziellen npm-Mirrors in China sehr langsam ist, können wir zur Lösung dieses Problems den von Taobao bereitgestellten Mirror (cnpm oder durch Konfigurieren von NPM) verwenden, um das Herunterladen und Installieren von Paketen zu beschleunigen.

Der Taobao-NPM-Mirror ist ein vollständiger Mirror von npmjs.org. Sie können ihn verwenden, um die offizielle Version zu ersetzen (schreibgeschützt). Die Synchronisierungsfrequenz beträgt derzeit einmal alle 10 Minuten, um die Synchronisierung mit dem offiziellen Dienst so weit wie möglich sicherzustellen.

Sie können das von Taobao angepasste cnpm-Kommandozeilenwerkzeug (mit gzip-Komprimierungsunterstützung) verwenden, um das Standard-npm zu ersetzen:

$ npm install -g cnpm --registry=https://registry.npmmirror.com

Als Nächstes können wir cnpm verwenden, um npm für die Paketinstallation und -verwaltung zu ersetzen:

$ cnpm install [name]

package.json-Beschreibung und -Verwendung

package.json ist eine Kerndatei in einem Node.js-Projekt und enthält die Metadaten, Abhängigkeiten, Skripte und andere Informationen des Projekts.

Die Datei package.json wird verwendet, um die Metadaten und Abhängigkeitsbeziehungen des Projekts zu beschreiben. Sie befindet sich normalerweise im Stammverzeichnis des Projekts und dient als Konfigurationsdatei des Projekts.

Die Datei package.json ist eine Datei im JSON-Format, die die folgenden grundlegenden Felder enthält:

  • name: Der Name des Projekts, der eindeutig sein sollte, wobei üblicherweise Kleinbuchstaben und Bindestriche verwendet werden.
  • version: Die Versionsnummer des Projekts, die dem Semantic Versioning folgt.
  • description: Eine kurze Beschreibung des Projekts.
  • main: Die Einstiegsdatei des Projekts, normalerweise die Startdatei der Anwendung.
  • scripts: Definiert eine Reihe von Kommandozeilen-Skripten, die bestimmte Aufgaben im Projekt ausführen können.
  • dependencies: Listet alle Abhängigkeitspakete auf, die für die Ausführung des Projekts erforderlich sind, sowie deren Versionen.
  • devDependencies: Listet Abhängigkeitspakete und deren Versionen auf, die nur während der Entwicklung benötigt werden.
  • peerDependencies: Listet Pakete auf, von denen das Projekt erwartet, dass seine Abhängigkeitspakete ebenfalls von ihnen abhängen.
  • optionalDependencies: Listet optionale Abhängigkeitspakete auf.
  • engines: Gibt die mit dem Projekt kompatible Node.js-Version an.
  • repository: Informationen zum Code-Repository des Projekts, wie die URL des GitHub-Repositorys.
  • keywords: Schlüsselwörter für das Projekt, hilfreich, um das Projekt in der npm-Suche zu finden.
  • author: Informationen zum Autor des Projekts.
  • license: Informationen zur Lizenz des Projekts.

Verwendung:

  1. Projekt initialisieren: Führen Sie dennpm initBefehl im Projektverzeichnis, und npm führt Sie durch die Erstellung einerpackage.jsonDatei, oder automatisch eine erzeugenpackage.json。

  2. Abhängigkeiten installieren: Verwenden Sie dennpm install <package-name>Befehl, um Abhängigkeiten zu installieren. npm fügt die Abhängigkeiten automatisch zupackage.jsonin der DateidependenciesoderdevDependenciesund erstelltpackage-lock.json-Datei, um die Abhängigkeitsversionen zu sperren.

  3. Skripte verwalten: Definieren Sie Befehle imscriptsFeld, zum Beispiel"start": "node app.js", und dann können Sie dennpm startBefehl zum Ausführen dieser Skripte.

  4. Versionskontrolle: Verwenden Sie dennpm versionBefehl zur Verwaltung der Versionsnummer des Projekts. npm aktualisiert automatisch die Versionsnummer inpackage.jsonund erzeugt ein neues Git-Tag.

  5. Das Paket veröffentlichen: Wenn das Projekt bereit ist, bei npm veröffentlicht zu werden, können Sie dennpm publishBefehl verwenden, und npm liest die Informationen inpackage.json, um das Paket zu veröffentlichen.

  6. Abhängigkeitsverwaltung:package.jsonundpackage-lock.jsonarbeiten mit der Datei zusammen, um konsistente Abhängigkeitsversionen in verschiedenen Umgebungen sicherzustellen.

Die typische Struktur einer package.json-Datei sieht wie folgt aus:

Beispiel

{
  "name": "my-project",
  "version": "1.0.0",
  "description": "Ein einfaches Node.js-Projekt",
  "main": "app.js",
  "scripts": {
    "start": "node app.js",
    "test": "echo \"Fehler: kein Test angegeben\" && exit 1"
  },
  "dependencies": {
    "express": "^4.17.1"
  },
  "devDependencies": {
    "nodemon": "^2.0.20"
  },
  "keywords": ["node", "npm", "example"],
  "author": "Ihr Name",
  "license": "MIT"
}

Feldbeschreibungen:

FeldBeschreibung
nameDer Name des Projekts, normalerweise Kleinbuchstaben und Bindestriche.
versionDie Versionsnummer des Projekts, gemäßSpracheBedeutungtransformierenVersionSpezifikation (SemVer)。
descriptionEine kurze Beschreibung des Projekts.
mainDie Einstiegsdatei des Projekts, standardmäßig aufindex.js。
scriptsDefiniert ausführbare Skriptbefehle für das Projekt, wie zum Beispielnpm start。
dependenciesAbhängigkeitsbibliotheken, die zur Laufzeit benötigt werden, bei der Installation hinzugefügt zunode_modules。
devDependenciesAbhängigkeitsbibliotheken, die während der Entwicklung verwendet werden, nicht in Produktionsumgebungen installiert.
keywordsEin Array von Schlüsselwörtern, hilfreich zur Beschreibung des Projekts und zum Auffinden in der NPM-Suche.
authorDie Autorinformationen des Projekts.
licenseDer Lizenztyp des Projekts, wie z. B.MIT、ISC。

Vorteile der Verwendung von package.json

  • Abhängigkeitsverwaltung: Zentrale Verwaltung der Projektabhängigkeiten und ihrer Versionen.
  • Automatisierung von Aufgaben: Durch dasscriptsFeld können Sie bequem gängige Aufgaben ausführen.
  • Versionskontrolle: Stellen Sie die Konsistenz des Projekts und seiner Abhängigkeitsversionen sicher, um die Teamzusammenarbeit zu erleichtern.
  • Beschreibung des Projekts: Stellen Sie Metadateninformationen für das Projekt bereit, um die Veröffentlichung und Weitergabe zu erleichtern.

Abhängigkeitsverwaltung

dependencies: Speichert die Abhängigkeiten, die für die Ausführung des Projekts erforderlich sind.

"dependencies": {
  "express": "^4.17.1"
}

Bei der Installation von Abhängigkeiten verwenden Sie:

npm install express

devDependencies: Speichert Abhängigkeiten, die während der Projektentwicklung benötigt werden.

"devDependencies": {
  "nodemon": "^2.0.20"
}

Bei der Installation von Abhängigkeiten verwenden Sie:

npm install nodemon --save-dev

scripts-Feld

Das scripts-Feld wird verwendet, um Befehle zu definieren, die über npm run <script> ausgeführt werden können. Übliche Skripte umfassen:

"scripts": {
  "start": "node app.js",
  "test": "jest",
  "build": "webpack --mode production",
  "dev": "nodemon app.js"
}

Beispiel für das Ausführen von Skripten:

npm run dev   # 执行 "nodemon app.js"
npm start     # 等同于 "node app.js",可以直接用 npm start 运行

Erklärung der Symbole in Versionsnummern

  • ^(Caret): Gibt an, dass die neueste Version installiert wird, die mit der aktuellen Hauptversion kompatibel ist. Zum Beispiel,^4.17.1installiert4.x.xdie neueste Version in .
  • ~(Tilde): Gibt an, dass die neueste Version installiert wird, die mit der aktuellen Minor-Version kompatibel ist. Zum Beispiel,~4.17.1installiert4.17.xdie neueste Version in .

Häufige Befehle

Die package.json-Datei initialisieren:

npm init

Mit npm init -y kann schnell eine Standard-package.json-Datei generiert werden.

Projektabhängigkeiten anzeigen:

npm list --depth=0

Abhängigkeiten aktualisieren:

npm update package-name

Hinweise

  • Halten Sie diepackage.jsonDatei prägnant und korrekt und vermeiden Sie unnötige Felder.
  • Verwenden Siepackage-lock.jsonum Abhängigkeitsversionen zu sperren, um die Konsistenz des Projekts über verschiedene Umgebungen hinweg sicherzustellen.
  • Aktualisieren Sie Abhängigkeiten regelmäßig, um die neuesten Funktionen und Sicherheitskorrekturen zu nutzen.

Weitere Informationen finden Sie unter:https://npmmirror.com/。

Weitere Erweiterungen