Suche…


Einführung

Node Package Manager (npm) bietet die folgenden zwei Hauptfunktionen: Online-Repositorys für node.js-Pakete / -Module, die auf search.nodejs.org durchsucht werden können. Befehlszeilenhilfsprogramm zum Installieren von Node.js-Paketen, Ausführen der Versionsverwaltung und Abhängigkeitsverwaltung für Node.js-Pakete.

Syntax

Parameter

Parameter Beispiel
Zugriff npm publish --access=public
Behälter npm bin -g
bearbeiten npm edit connect
Hilfe npm help init
drin npm init
Installieren npm install
Verknüpfung npm link
Pflaume npm prune
veröffentlichen npm publish ./
Neustart npm restart
Start npm start
halt npm start
aktualisieren npm update
Ausführung npm version

Pakete installieren

Einführung

Paket ist ein Begriff, der von npm zur Bezeichnung von Tools verwendet wird, die Entwickler für ihre Projekte verwenden können. Dies umfasst alles von Bibliotheken und Frameworks wie jQuery und AngularJS bis hin zu Task-Läufern wie Gulp.js. Die Pakete werden in einem Ordner mit dem Namen node_modules , der auch eine package.json Datei enthält. Diese Datei enthält Informationen zu allen Paketen, einschließlich Abhängigkeiten. Dies sind zusätzliche Module, die zur Verwendung eines bestimmten Pakets erforderlich sind.

Npm verwendet die Befehlszeile sowohl zum Installieren als auch zum Verwalten von Paketen. Benutzer, die versuchen, npm zu verwenden, sollten sich mit den grundlegenden Befehlen ihres Betriebssystems auskennen, z.


NPM installieren

Beachten Sie, dass zur Installation von Paketen NPM installiert sein muss.

Die empfohlene Methode zur Installation von NPM ist die Verwendung eines der Installationsprogramme auf der Download-Seite Node.js. Sie können überprüfen, ob bereits node.js installiert ist, indem Sie entweder den Befehl npm -v oder den Befehl npm version ausführen.

Überprüfen Sie nach der Installation von NPM über das Installationsprogramm Node.js, ob Updates verfügbar sind. Dies ist darauf zurückzuführen, dass NPM häufiger als das Installationsprogramm Node.js aktualisiert wird. Um nach Updates zu suchen, führen Sie den folgenden Befehl aus:

npm install npm@latest -g

Wie installiere ich Pakete?

Um ein oder mehrere Pakete zu installieren, gehen Sie folgendermaßen vor:

npm install <package-name>
# or
npm i <package-name>...

# e.g. to install lodash and express
npm install lodash express

Hinweis : Dadurch wird das Paket in dem Verzeichnis installiert, in dem sich die Befehlszeile gerade befindet. Daher ist es wichtig zu prüfen, ob das entsprechende Verzeichnis ausgewählt wurde

Wenn sich in Ihrem aktuellen Arbeitsverzeichnis bereits eine package.json Datei befindet und darin Abhängigkeiten definiert sind, package.json npm install install alle in der Datei aufgelisteten Abhängigkeiten automatisch auf und installiert sie. Sie können auch die Kurzversion des Befehls npm install : npm i

Wenn Sie eine bestimmte Version eines Pakets installieren möchten, verwenden Sie Folgendes:

npm install <name>@<version>

# e.g. to install version 4.11.1 of the package lodash
npm install [email protected]

Wenn Sie eine Version installieren möchten, die einem bestimmten Versionsbereich entspricht, verwenden Sie:

npm install <name>@<version range>

# e.g. to install a version which matches "version >= 4.10.1" and "version < 4.11.1"
# of the package lodash
npm install lodash@">=4.10.1 <4.11.1"

Wenn Sie die neueste Version installieren möchten, verwenden Sie:

npm install <name>@latest

Die obigen Befehle werden im zentralen npm Repository unter npmjs.com nach Paketen suchen . Wenn Sie nicht von der npm Registry installieren npm , werden andere Optionen unterstützt, z.

# packages distributed as a tarball
npm install <tarball file>
npm install <tarball url>

# packages available locally
npm install <local path>

# packages available as a git repository
npm install <git remote url>

# packages available on GitHub
npm install <username>/<repository>

# packages available as gist (need a package.json)
npm install gist:<gist-id>

# packages from a specific repository
npm install --registry=http://myreg.mycompany.com <package name>

# packages from a related group of packages 
# See npm scope
npm install @<scope>/<name>(@<version>)

# Scoping is useful for separating private packages hosted on private registry from
# public ones by setting registry for specific scope
npm config set @mycompany:registry http://myreg.mycompany.com
npm install @mycompany/<package name>

Normalerweise werden Module lokal in einem Ordner namens node_modules , der sich in Ihrem aktuellen Arbeitsverzeichnis befindet. Dies ist das Verzeichnis, das von require() zum Laden von Modulen verwendet wird, um sie für Sie verfügbar zu machen.

Wenn Sie bereits eine package.json Datei erstellt haben, können Sie die Option --save ( --save -S ) oder eine ihrer Varianten verwenden, um das installierte Paket package.json als abhängige package.json zu package.json hinzuzufügen. Wenn das Paket von einer anderen Person installiert wird, liest npm automatisch Abhängigkeiten aus der Datei package.json und installiert die aufgelisteten Versionen. Beachten Sie, dass Sie Ihre Abhängigkeiten weiterhin hinzufügen und verwalten können, indem Sie die Datei später bearbeiten. Daher ist es normalerweise ratsam, Abhängigkeiten zu verfolgen, z. B. mit:

npm install --save <name> # Install dependencies 
# or
npm install -S <name> # shortcut version --save 
# or
npm i -S <name>

Befolgen Sie den folgenden Befehl, um Pakete zu installieren und nur dann zu speichern, wenn sie für die Entwicklung, nicht für die Ausführung der Anwendung und nicht für die Ausführung der Anwendung benötigt werden.

npm install --save-dev <name> # Install dependencies for development purposes
# or
npm install -D <name> # shortcut version --save-dev
# or
npm i -D <name>

Abhängigkeiten installieren

Einige Module stellen nicht nur eine Bibliothek zur Verfügung, sondern auch eine oder mehrere Binärdateien, die über die Befehlszeile verwendet werden sollen. Sie können diese Pakete zwar weiterhin lokal installieren, es wird jedoch häufig bevorzugt, sie global zu installieren, damit die Befehlszeilenprogramme aktiviert werden können. In diesem Fall verknüpft npm die Binärdateien automatisch mit den entsprechenden Pfaden (z. B. /usr/local/bin/<name> ), sodass sie von der Befehlszeile aus verwendet werden können. Um ein Paket global zu installieren, verwenden Sie:

npm install --global <name>
# or
npm install -g <name>
# or
npm i -g <name>

# e.g. to install the grunt command line tool
npm install -g grunt-cli

Wenn Sie eine Liste aller installierten Pakete und ihrer zugehörigen Versionen im aktuellen Arbeitsbereich anzeigen möchten, verwenden Sie Folgendes:

npm list
npm list <name>

Durch das Hinzufügen eines optionalen Namensarguments kann die Version eines bestimmten Pakets überprüft werden.


Hinweis: Wenn Sie beim Versuch, ein npm-Modul global zu installieren, auf Berechtigungsprobleme stoßen, widerstehen Sie der Versuchung, ein sudo npm install -g ... , um das Problem zu lösen. Es ist gefährlich, Skripts von Drittanbietern für die Ausführung auf Ihrem System mit erhöhten Berechtigungen zuzulassen. Das Berechtigungsproblem kann bedeuten, dass Sie ein Problem mit der Art und Weise haben, wie npm selbst installiert wurde. Wenn Sie an der Installation von Node in Sandbox-Benutzerumgebungen interessiert sind, möchten Sie möglicherweise versuchen, nvm zu verwenden .

Wenn Sie über Build-Tools oder andere Entwicklungsabhängigkeiten verfügen (z. B. Grunt), möchten Sie möglicherweise, dass diese nicht mit der von Ihnen bereitgestellten Anwendung gebündelt werden. In diesem Fall sollten Sie es als Entwicklungsabhängigkeit haben, die in der package.json unter devDependencies . Verwenden Sie --save-dev (oder -D ), um ein Paket als Entwicklungsabhängigkeit zu installieren.

npm install --save-dev <name> // Install development dependencies which is not included in production 
# or
npm install -D <name>

Sie werden sehen, dass das Paket dann zu den devDependencies Ihrer package.json .

Um Abhängigkeiten eines heruntergeladenen / geklonten node.js-Projekts zu installieren, können Sie einfach Folgendes verwenden

npm install
# or
npm i

npm liest automatisch die Abhängigkeiten von package.json und installiert sie.

NPM hinter einem Proxyserver

Wenn Ihr Internetzugang über einen Proxyserver erfolgt, müssen Sie möglicherweise die npm-Installationsbefehle ändern, die auf Remote-Repositorys zugreifen. npm verwendet eine Konfigurationsdatei, die über die Befehlszeile aktualisiert werden kann:

npm config set

Sie können Ihre Proxy-Einstellungen in den Einstellungen Ihres Browsers finden. Nachdem Sie die Proxy-Einstellungen erhalten haben (Server-URL, Port, Benutzername und Kennwort); Sie müssen Ihre npm-Konfigurationen wie folgt konfigurieren.

$ npm config set proxy http://<username>:<password>@<proxy-server-url>:<port>
$ npm config set https-proxy http://<username>:<password>@<proxy-server-url>:<port>

username , password , port sind Felder optional. Nachdem Sie diese Einstellungen vorgenommen haben, funktionieren Ihre npm install , npm i -g usw. ordnungsgemäß.

Bereiche und Repositories

# Set the repository for the scope "myscope"
npm config set @myscope:registry http://registry.corporation.com

# Login at a repository and associate it with the scope "myscope"
npm adduser --registry=http://registry.corporation.com --scope=@myscope

# Install a package "mylib" from the scope "myscope"
npm install @myscope/mylib

Wenn der Name Ihres eigenen Pakets mit @myscope beginnt und der Bereich "myscope" einem anderen Repository zugeordnet ist npm publish lädt npm publish Ihr Paket stattdessen in dieses Repository hoch.

Sie können diese Einstellungen auch in einer .npmrc Datei .npmrc :

@myscope:registry=http://registry.corporation.com
//registry.corporation.com/:_authToken=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxx

Dies ist nützlich, wenn Sie den Build auf einem CI-Server automatisieren möchten, z

Pakete deinstallieren

Um ein oder mehrere lokal installierte Pakete zu deinstallieren, verwenden Sie:

npm uninstall <package name>

Der Deinstallationsbefehl für npm enthält fünf Aliase, die ebenfalls verwendet werden können:

npm remove <package name>
npm rm <package name>
npm r <package name>

npm unlink <package name>
npm un <package name>

Wenn Sie das Paket als Teil der Deinstallation aus der package.json Datei entfernen package.json , verwenden Sie das Flag --save (Abkürzung: -S ):

npm uninstall --save <package name>
npm uninstall -S <package name>

Verwenden --save-dev für eine Entwicklungsabhängigkeit das --save-dev (Kurzform: -D ):

npm uninstall --save-dev <package name>
npm uninstall -D <package name>

Verwenden --save-optional für eine optionale Abhängigkeit das --save-optional (Kürzel: -O ):

npm uninstall --save-optional <package name>
npm uninstall -O <package name>

Für Pakete, die global installiert werden, verwenden Sie das Flag --global (Kürzel: -g ):

npm uninstall -g <package name>

Grundlegende semantische Versionierung

Bevor Sie ein Paket veröffentlichen, müssen Sie es versionieren. npm unterstützt semantische Versionierung , dh es gibt Patches, Minor und Major Releases.

Wenn Ihr Paket beispielsweise die Version 1.2.3 hat, um die Version zu ändern, müssen Sie:

  1. Patch-Version: npm version patch => 1.2.4
  2. Nebenversion: npm version minor => 1.3.0
  3. Hauptversion: npm version major => 2.0.0

Sie können eine Version auch direkt angeben mit:

npm version 3.1.4 => 3.1.4

Wenn Sie eine Paketversion mit einem der obigen npm-Befehle festlegen, ändert npm das Versionsfeld der package.json-Datei, schreibt es fest und erstellt außerdem ein neues Git-Tag mit dem Präfix "v", als ob Sie es wären habe den Befehl erteilt:

git tag v3.1.4

Im Gegensatz zu anderen Paketmanagern wie Bower ist die npm-Registrierung nicht darauf angewiesen, dass für jede Version Git-Tags erstellt werden. Wenn Sie jedoch gerne mit Tags arbeiten, sollten Sie daran denken, das neu erstellte Tag zu verschieben, nachdem Sie die Paketversion angehoben haben:

git push origin master (um die Änderung auf package.json zu verschieben)

git push origin v3.1.4 (um das neue Tag zu drücken)

Oder Sie können dies auf einen Schlag mit:

git push origin master --tags

Paketkonfiguration einrichten

Node.js- package.json sind in einer Datei namens package.json , die Sie im Stammverzeichnis jedes Projekts finden. Sie können eine neue Konfigurationsdatei einrichten, indem Sie Folgendes aufrufen:

npm init

Dadurch wird versucht, das aktuelle Arbeitsverzeichnis für Git-Repository-Informationen (falls vorhanden) und Umgebungsvariablen zu lesen, um einige der Platzhalterwerte für Sie zu versuchen und automatisch zu vervollständigen. Andernfalls wird ein Eingabedialogfeld für die grundlegenden Optionen angezeigt.

Wenn Sie eine package.json mit Standardwerten erstellen package.json , verwenden Sie:

npm init --yes
# or
npm init -y 

Wenn Sie package.json für ein Projekt package.json , das nicht als npm-Paket veröffentlicht werden soll (dh, nur um die Abhängigkeiten package.json ), können Sie diese Absicht in Ihrer package.json Datei package.json :

  1. Legen Sie optional die private Eigenschaft auf true fest, um eine versehentliche Veröffentlichung zu verhindern.
  2. Setzen Sie optional die license Eigenschaft auf "UNLICENSED", um anderen das Recht zur Verwendung Ihres Pakets zu verweigern.

Um ein Paket zu installieren und automatisch in package.json zu package.json , verwenden Sie:

npm install --save <package>

Das Paket und die zugehörigen Metadaten (z. B. die Paketversion) werden in Ihren Abhängigkeiten angezeigt. Wenn Sie if als Entwicklungsabhängigkeit speichern (mithilfe von --save-dev ), wird das Paket stattdessen in Ihren devDependencies .

Mit diesem bare-bones package.json werden beim Installieren oder Aktualisieren von Paketen Warnmeldungen package.json , die Sie darüber package.json , dass Ihnen eine Beschreibung und das Repository-Feld fehlen. Diese Meldungen können zwar ignoriert werden, Sie können sie jedoch entfernen, indem Sie die package.json in einem beliebigen Texteditor öffnen und dem JSON-Objekt die folgenden Zeilen hinzufügen:

[...]
"description": "No description",
"repository": {
  "private": true
},
[...]

Paket veröffentlichen

Stellen Sie zunächst sicher, dass Sie Ihr Paket konfiguriert haben (wie in Paketkonfiguration einrichten beschrieben ). Dann müssen Sie bei npmjs angemeldet sein.

Wenn Sie bereits einen npm-Benutzer haben

npm login

Wenn Sie keinen Benutzer haben

npm adduser

Um zu überprüfen, ob Ihr Benutzer im aktuellen Client registriert ist

npm config ls

Danach, wenn Ihr Paket zur Veröffentlichung bereit ist, verwenden Sie es

npm publish

Und du bist fertig.

Wenn Sie eine neue Version veröffentlichen müssen, stellen Sie sicher, dass Sie Ihre Paketversion aktualisieren, wie in der semantischen Versionierung von Basic angegeben. Andernfalls können Sie das Paket nicht über npm veröffentlichen.

{
    name: "package-name",
    version: "1.0.4"
}

Skripte ausführen

Sie können Skripte in Ihrer package.json , zum Beispiel:

{
  "name": "your-package",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "author": "",
  "license": "ISC",
  "dependencies": {},
  "devDependencies": {},
  "scripts": {
    "echo": "echo hello!"
  }
}

Um das echo Skript auszuführen, führen Sie npm run echo über die Befehlszeile aus. Willkürliche Skripte, wie beispielsweise echo oben, müssen mit npm run <script name> . npm verfügt auch über eine Reihe von offiziellen Skripts, die in bestimmten Lebensphasen des Pakets ausgeführt werden (z. B. preinstall ). Hier finden Sie die gesamte Übersicht darüber, wie npm Skriptfelder behandelt.

npm-Skripts werden am häufigsten für das Starten eines Servers, das Erstellen des Projekts und das Ausführen von Tests verwendet. Hier ist ein realistischeres Beispiel:

  "scripts": {
    "test": "mocha tests",
    "start": "pm2 start index.js"
  }

In den scripts Einträge, Kommandozeilen - Programme wie mocha funktionieren , wenn entweder global oder lokal installiert. Wenn der Befehlszeileneintrag nicht im Systempfad vorhanden ist, überprüft npm Ihre lokal installierten Pakete.

Wenn Ihre Skripts sehr lang werden, können Sie sie wie folgt in Teile aufteilen:

  "scripts": {
    "very-complex-command": "npm run chain-1 && npm run chain-2",
    "chain-1": "webpack",
    "chain-2": "node app.js"
  }

Überflüssige Pakete entfernen

Führen Sie den folgenden Befehl aus, um überflüssige Pakete (Pakete, die installiert sind, aber nicht in der Abhängigkeitsliste enthalten) zu entfernen:

npm prune

Um alle dev Pakete zu entfernen, fügen --production Flag " --production :

npm prune --production

Mehr dazu

Aktuell installierte Pakete auflisten

Um eine Liste (Baumansicht) der aktuell installierten Pakete zu erstellen, verwenden Sie

npm list

ls , la und ll sind Aliase des Listenbefehls . Die Befehle la und ll zeigen erweiterte Informationen wie Beschreibung und Repository.

Optionen

Das Antwortformat kann durch Übergeben von Optionen geändert werden.

npm list --json
  • json - Zeigt Informationen im Json-Format an
  • long - Zeigt erweiterte Informationen an
  • parseable - Zeigt eine analysierbare Liste anstelle eines Baums an
  • global - Zeigt global installierte Pakete an
  • Tiefe - Maximale Anzeigetiefe des Abhängigkeitsbaums
  • dev / development - Zeigt devDependencies an
  • prod / production - Zeigt Abhängigkeiten

Wenn Sie möchten, können Sie auch die Homepage des Pakets aufrufen.

npm home <package name>

Aktualisieren von npm und Paketen

Da npm selbst ein Node.js-Modul ist, kann es mit sich selbst aktualisiert werden.

Wenn das Betriebssystem Windows ist, muss die Eingabeaufforderung als Admin ausgeführt werden

npm install -g npm@latest

Wenn Sie nach aktualisierten Versionen suchen möchten, können Sie Folgendes tun:

npm outdated

Um ein bestimmtes Paket zu aktualisieren:

npm update <package name>

Dadurch wird das Paket gemäß den Einschränkungen in package.json auf die neueste Version aktualisiert

Falls Sie auch die aktualisierte Version in package.json sperren möchten:

npm update <package name> --save

Sperren von Modulen auf bestimmte Versionen

Standardmäßig installiert npm die neueste verfügbare Version von Modulen entsprechend der semantischen Version der jeweiligen Abhängigkeiten. Dies kann problematisch sein, wenn ein Modulautor sich nicht an Semver hält und beispielsweise bahnbrechende Änderungen in einem Modulupdate einführt.

node_modules , um die Version der einzelnen Abhängigkeiten (und die Versionen ihrer Abhängigkeiten usw.) auf die bestimmte lokal installierte Version im Ordner node_modules

npm shrinkwrap

Daraufhin wird neben Ihrem package.json ein npm-shrinkwrap.json package.json dem die spezifischen Versionen der Abhängigkeiten aufgeführt sind.

Einrichten für global installierte Pakete

Sie können npm install -g , um ein Paket "global" zu installieren. In der Regel wird dazu eine ausführbare Datei installiert, die Sie Ihrem Ausführungspfad hinzufügen können. Zum Beispiel:

npm install -g gulp-cli

Wenn Sie Ihren Pfad aktualisieren, können Sie gulp direkt anrufen.

In vielen Betriebssystemen versucht npm install -g , in ein Verzeichnis zu schreiben, in das Ihr Benutzer möglicherweise nicht schreiben kann, beispielsweise nach /usr/bin . Sie sollten sudo npm install in diesem Fall nicht verwenden, da möglicherweise ein Sicherheitsrisiko besteht, wenn Sie beliebige Skripts mit sudo Der Root-Benutzer erstellt möglicherweise Verzeichnisse in Ihrem Zuhause, in die Sie nicht schreiben können.

Sie können npm über Ihre Konfigurationsdatei ~/.npmrc mitteilen, wohin globale Module installiert werden ~/.npmrc . Dies ist das prefix das Sie mit dem npm prefix anzeigen können.

prefix=~/.npm-global-modules

Dies wird das Präfix verwenden, wenn Sie npm install -g ausführen. Sie können auch npm install --prefix ~/.npm-global-modules , um das Präfix bei der npm install --prefix ~/.npm-global-modules . Wenn das Präfix Ihrer Konfiguration entspricht, müssen Sie -g nicht verwenden.

Um das global installierte Modul verwenden zu können, muss es sich in Ihrem Pfad befinden:

export PATH=$PATH:~/.npm-global-modules/bin

Wenn Sie nun npm install -g gulp-cli ausführen, können Sie gulp .

Hinweis: Wenn Sie npm install (ohne -g ), ist das Präfix das Verzeichnis mit package.json oder das aktuelle Verzeichnis, wenn in der Hierarchie kein Verzeichnis gefunden wird. Dadurch wird auch ein Verzeichnis node_modules/.bin , das die ausführbaren Dateien enthält. Wenn Sie eine ausführbare Datei verwenden möchten, die für ein Projekt spezifisch ist, müssen Sie npm install -g . Sie können die in node_modules/.bin .

Verknüpfen von Projekten für schnelleres Debugging und Entwicklung

Das Erstellen von Abhängigkeiten für Projekte kann manchmal eine langwierige Aufgabe sein. Verwenden Sie den npm link anstatt eine Paketversion in NPM zu veröffentlichen und die Abhängigkeit zum Testen der Änderungen zu installieren. npm link erstellt einen symbolischen npm link sodass der neueste Code in einer lokalen Umgebung getestet werden kann. Dies erleichtert das Testen globaler Tools und Projektabhängigkeiten, indem der neueste Code ausgeführt wird, bevor eine veröffentlichte Version erstellt wird.

Hilfstext

NAME
       npm-link - Symlink a package folder

SYNOPSIS
         npm link (in package dir)
         npm link [<@scope>/]<pkg>[@<version>]

         alias: npm ln

Schritte zum Verknüpfen von Projektabhängigkeiten

Beachten Sie beim Erstellen der Abhängigkeitsverknüpfung, dass der Name des Pakets im übergeordneten Projekt angegeben wird.

  1. CD in ein Abhängigkeitsverzeichnis (zB: cd ../my-dep )
  2. npm link
  3. CD in das Projekt, das die Abhängigkeit verwendet
  4. npm link my-dep oder wenn der Namespace npm link @namespace/my-dep

Schritte zum Verknüpfen eines globalen Tools

  1. CD in das Projektverzeichnis (zB: cd eslint-watch )
  2. npm link
  3. Verwenden Sie das Werkzeug
  4. esw --quiet

Probleme, die auftreten können

Das Verknüpfen von Projekten kann manchmal zu Problemen führen, wenn das Abhängigkeits- oder globale Tool bereits installiert ist. npm uninstall (-g) <pkg> und das Ausführen des npm link löst normalerweise alle auftretenden Probleme.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow