Come installo un modulo a livello globale usando npm?


202

Di recente ho installato Node.js e il modulo npm su OSX e ho un problema con le impostazioni che penso:

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

Risposte:


347

Se si desidera installare un modulo npm a livello globale, assicurarsi di utilizzare il nuovo -gflag, ad esempio:

npm install forever -g

Le raccomandazioni generali sull'installazione del modulo npm dall'1.0rc (prese da blog.nodejs.org ):

  • Se stai installando qualcosa che vuoi usare nel tuo programma, usando request ("qualunque"), quindi installalo localmente , alla radice del tuo progetto.
  • Se stai installando qualcosa che vuoi usare nella tua shell, dalla riga di comando o qualcosa, installalo a livello globale , in modo che i suoi binari finiscano nella tua variabile d'ambiente PATH.

Di recente ho usato questi consigli ed è andato abbastanza bene. Ho installato per sempre a livello globale (poiché è uno strumento da riga di comando) e tutti i miei moduli applicativi a livello locale.

Tuttavia, se si desidera utilizzare alcuni moduli a livello globale (ad esempio express o mongodb), seguire questo consiglio (anche preso da blog.nodejs.org ):

Certo, ci sono alcuni casi in cui vuoi fare entrambe le cose. Coffee-script ed Express sono entrambi buoni esempi di app che hanno un'interfaccia a riga di comando, nonché una libreria. In questi casi, è possibile effettuare una delle seguenti operazioni:

  • Installalo in entrambi i posti . Seriamente, sei così a corto di spazio su disco? Va bene, davvero. Sono piccoli programmi JavaScript.
  • Installalo a livello globale, quindi npm link coffee-script o npm link express (se ti trovi su una piattaforma che supporta i collegamenti simbolici). Quindi devi solo aggiornare la copia globale per aggiornare anche tutti i collegamenti simbolici.

La prima opzione è la migliore secondo me. Semplice, chiaro, esplicito. Il secondo è molto utile se si intende riutilizzare la stessa libreria in diversi progetti. (Maggiori informazioni sul collegamento npm in una puntata futura.)

Non ho testato una di quelle variazioni, ma sembrano essere abbastanza semplici.


7
Grazie per i chiarimenti. Isaacs dovrebbe sostituire l'intero manfile npm e git wiki con il testo sopra. Potrebbe chiarire la confusione di massa.
Mauvis Ledford,

shweeet. Questo è stato utile, sono stato colto da questo cambiamento. Ad un certo punto, npm install ha dato l'accesso alla riga di comando, poi è svanito e non stavo seguendo il progetto abbastanza da vicino per prendere la transizione.
Mark Essel,

Questo spiega perché avevo un modulo nodo finito nella mia directory di configurazione di Apache. . .
Ian Hunter,

1
Da blog.node.js.org : di solito i binari globali sono installati in {prefisso} / bin e i moduli globali sono installati in {prefisso} / node_modules e i moduli locali sono in ./node_modules, gli eseguibili vanno in ./node_modules/.bin/ . È possibile eseguire npm prefixper ottenere il prefisso locale e node prefix -gper vedere il prefisso globale :)
nacho4d

"Se stai installando qualcosa che vuoi usare nel tuo programma, usando request (" qualunque "), quindi installalo localmente , alla radice del tuo progetto." - Penso che non sia una buona idea se il modulo contiene binari compilati: deve essere ricompilato correttamente su Linux e Windows. Penso che questo tipo di moduli debba essere impostato usando l'ambiente VODILE NODE_PATH ( nodejs.org/api/… )
Sneg

8

Su un Mac, ho trovato che l'output conteneva le informazioni che stavo cercando:

$> 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

Dopo aver aggiunto /usr/local/share/npm/binalla export PATHriga nel mio .bash_profile, salvandolo e sourceing, sono stato in grado di eseguire

$> karma --help

normalmente.




1

Devi avere i privilegi di superutente,

 sudo npm install -g <package name>

-1

In Ubuntu, imposta il percorso di node_modules nel file .bashrc

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


-5

Potresti non avere i permessi di scrittura per installare un modulo nodo nella posizione globale come /usr/local/lib/node_modules, nel qual caso esegui npm install -g pacchetto come root.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.