Wie installiere ich ein Modul global mit npm?

202

Ich habe kürzlich Node.js und das npm-Modul unter OSX installiert und habe ein Problem mit den Einstellungen, die ich denke:

npm install [MODULE] is not installing the node.js module to the default path 
which is /usr/local/lib/node_modules.
Cristian
quelle

Antworten:

347

Wenn Sie ein npm-Modul global installieren möchten, stellen Sie sicher, dass Sie das neue -gFlag verwenden, zum Beispiel:

npm install forever -g

Die allgemeinen Empfehlungen zur Installation des npm-Moduls seit 1.0rc (entnommen aus blog.nodejs.org ):

  • Wenn Sie etwas installieren, das Sie in Ihrem Programm verwenden möchten, verwenden Sie require ('was auch immer'), und installieren Sie es lokal im Stammverzeichnis Ihres Projekts.
  • Wenn Sie etwas installieren, das Sie in Ihrer Shell, in der Befehlszeile oder so verwenden möchten, installieren Sie es global , sodass die Binärdateien in Ihrer PATH-Umgebungsvariablen landen.

Ich habe diese Empfehlungen erst kürzlich verwendet und sie sind ziemlich reibungslos verlaufen. Ich habe für immer global installiert (da es sich um ein Befehlszeilentool handelt) und alle meine Anwendungsmodule lokal installiert.

Wenn Sie jedoch einige Module global verwenden möchten (z. B. Express oder Mongodb), befolgen Sie diese Hinweise (auch von blog.nodejs.org ):

Natürlich gibt es einige Fälle, in denen Sie beides tun möchten. Coffee-Script und Express sind gute Beispiele für Apps mit einer Befehlszeilenschnittstelle sowie einer Bibliothek. In diesen Fällen können Sie einen der folgenden Schritte ausführen:

  • Installieren Sie es an beiden Stellen . Im Ernst, haben Sie so wenig Speicherplatz? Es ist wirklich in Ordnung. Es sind winzige JavaScript-Programme.
  • Installieren Sie es global und dann npm link Coffee-Script oder npm Link Express (wenn Sie sich auf einer Plattform befinden, die symbolische Links unterstützt). Dann müssen Sie nur die globale Kopie aktualisieren, um auch alle Symlinks zu aktualisieren.

Die erste Option ist meiner Meinung nach die beste. Einfach, klar, explizit. Die zweite ist sehr praktisch, wenn Sie dieselbe Bibliothek in einer Reihe verschiedener Projekte wiederverwenden möchten. (Mehr zum npm-Link in einer zukünftigen Folge.)

Ich habe eine dieser Variationen nicht getestet, aber sie scheinen ziemlich einfach zu sein.

schaermu
quelle
7
Danke für die Klarstellungen. Isaacs sollte das gesamte npm-Manfile- und Git-Wiki durch den obigen Text ersetzen. Könnte die Massenverwirrung beseitigen.
Mauvis Ledford
shweeet. Das war praktisch, ich wurde von dieser Veränderung erwischt. Irgendwann gab npm install den Befehlszeilenzugriff, dann verschwand er und ich verfolgte das Projekt nicht genau genug, um den Übergang zu erfassen.
Mark Essel
Dies erklärt, warum ein Knotenmodul in meinem Apache-Konfigurationsverzeichnis landete. . .
Ian Hunter
1
Von blog.node.js.org : Normalerweise werden globale Binärdateien in {prefix} / bin und globale Module in {prefix} / node_modules und lokale Module in ./node_modules installiert, ausführbare Dateien in ./node_modules/.bin/ . Sie können ausführen npm prefix, um das lokale Präfix zu erhalten und node prefix -gdas globale Präfix
anzuzeigen
"Wenn Sie etwas installieren, das Sie in Ihrem Programm verwenden möchten, verwenden Sie require ('was auch immer'), und installieren Sie es lokal im Stammverzeichnis Ihres Projekts." - Ich denke, es ist keine gute Idee, wenn das Modul kompilierte Binärdateien enthält: Es muss unter Linux und Windows richtig neu kompiliert werden. Ich denke, solche Module müssen mit der NODE_PATH-Umgebung vriable ( nodejs.org/api/… ) eingestellt werden
Sneg
8

Auf einem Mac stellte ich fest, dass die Ausgabe die gesuchten Informationen enthielt:

$> npm install -g karma
...
...
> ws@0.4.25 install /usr/local/share/npm/lib/node_modules/karma/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)
...
$> ls /usr/local/share/npm/bin
karma nf

Nachdem ich /usr/local/share/npm/bindie export PATHZeile in meinem hinzugefügt .bash_profile, gespeichert und sourcegespeichert hatte, konnte ich ausgeführt werden

$> karma --help

normalerweise.

Droogans
quelle
4

Ich verwende gerne eine package.json-Datei im Stammverzeichnis Ihres App-Ordners.

Hier ist eine, die ich benutze

nvm use v0.6.4

http://pastie.org/3232212

npm install
Fullstacklife
quelle
2

Ich hatte Probleme bei der Installation von Express unter Ubuntu:

Wenn aus irgendeinem Grund der NPM-Befehl fehlt, testen Sie den Befehl npm mit npm help. Wenn nicht, folgen Sie diesen Schritten - http://arnolog.net/post/8424207595/installing-node-js-npm-express-mongoose-on-ubuntu

Wenn nur der Express-Befehl nicht funktioniert, versuchen Sie:

sudo npm install -g express

Dadurch funktionierte alles so, wie ich es von Windows7 und OSX gewohnt bin.

Hoffe das hilft!

Cody
quelle
1

Sie müssen über Superuser-Berechtigungen verfügen.

 sudo npm install -g <package name>
Saurav Kumar
quelle
-1

Legen Sie in Ubuntu den Pfad von node_modules in der .bashrc- Datei fest

export PATH = "/ home / username / node_modules / .bin: $ PATH"

Ratnesh Kushwaha
quelle
-5

Möglicherweise verfügen Sie nicht über Schreibberechtigungen, um ein Knotenmodul am globalen Speicherort zu installieren. /usr/local/lib/node_modulesFühren Sie in diesem Fall das Paket npm install -g als root aus.

Dmitri Bouianov
quelle