Comment installer un module globalement en utilisant npm?

202

J'ai récemment installé le module Node.js et npm sur OSX et j'ai un problème avec les paramètres je pense:

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

Réponses:

347

Si vous souhaitez installer un module npm globalement, assurez-vous d'utiliser le nouvel -gindicateur, par exemple:

npm install forever -g

Les recommandations générales concernant l'installation du module npm depuis 1.0rc (tirées de blog.nodejs.org ):

  • Si vous installez quelque chose que vous souhaitez utiliser dans votre programme, en utilisant require ('que ce soit'), puis installez-le localement , à la racine de votre projet.
  • Si vous installez quelque chose que vous souhaitez utiliser dans votre shell, sur la ligne de commande ou quelque chose, installez-le globalement , afin que ses binaires se retrouvent dans votre variable d'environnement PATH.

J'ai récemment utilisé ces recommandations et elles se sont déroulées assez facilement. J'ai installé pour toujours globalement (car c'est un outil en ligne de commande) et tous mes modules d'application localement.

Cependant, si vous souhaitez utiliser certains modules à l'échelle mondiale (c'est-à-dire express ou mongodb), suivez ces conseils (également tirés de blog.nodejs.org ):

Bien sûr, il y a des cas où vous voulez faire les deux. Coffee-script et Express sont tous deux de bons exemples d'applications qui ont une interface en ligne de commande, ainsi qu'une bibliothèque. Dans ces cas, vous pouvez effectuer l'une des opérations suivantes:

  • Installez-le aux deux endroits . Sérieusement, vous manquez d'espace disque? C'est très bien, vraiment. Ce sont de minuscules programmes JavaScript.
  • Installez-le globalement, puis npm link coffee-script ou npm link express (si vous êtes sur une plate-forme qui prend en charge les liens symboliques.) Ensuite, vous n'avez qu'à mettre à jour la copie globale pour mettre à jour tous les liens symboliques également.

La première option est la meilleure à mon avis. Simple, clair, explicite. Le second est vraiment pratique si vous allez réutiliser la même bibliothèque dans un tas de projets différents. (Plus d'informations sur le lien npm dans un prochain épisode.)

Je n'ai pas testé l'une de ces variantes, mais elles semblent assez simples.

Schaermu
la source
7
Merci pour les clarifications. Isaacs devrait remplacer l'intégralité du wiki npm manfile et git par le texte ci-dessus. Pourrait dissiper la confusion de masse.
Mauvis Ledford
shweeet. Cela a été utile, j'ai été pris par ce changement. À un moment donné, npm install a donné un accès en ligne de commande, puis il a disparu et je ne suivais pas le projet assez attentivement pour intercepter la transition.
Mark Essel
Cela explique pourquoi un module de noeud s'est retrouvé dans mon répertoire de configuration Apache. . .
Ian Hunter
1
Depuis blog.node.js.org : les binaires globaux sont généralement installés dans {prefix} / bin et les modules globaux sont installés dans {prefix} / node_modules et les modules locaux sont dans ./node_modules, les exécutables vont dans ./node_modules/.bin/ . Vous pouvez exécuter npm prefixpour obtenir le préfixe local et node prefix -gpour voir le préfixe global :)
nacho4d
"Si vous installez quelque chose que vous souhaitez utiliser dans votre programme, en utilisant require ('any'), installez-le localement , à la racine de votre projet." - Je pense que ce n'est pas une bonne idée si le module contient un binaire compilé: il doit être recompilé correctement sur Linux et Windows. Je pense que ce type de modules doit être défini en utilisant l'environnement NODE_PATH vriable ( nodejs.org/api/… )
Sneg
8

Sur un Mac, j'ai trouvé que la sortie contenait les informations que je cherchais:

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

Après avoir ajouté /usr/local/share/npm/binà la export PATHligne dans mon .bash_profile, l'avoir sauvegardée et sourceing, j'ai pu exécuter

$> karma --help

normalement.

Droogans
la source
4

J'aime utiliser un fichier package.json à la racine de votre dossier d'application.

En voici un que j'utilise

nvm use v0.6.4

http://pastie.org/3232212

npm install
fullstacklife
la source
2

J'ai eu des problèmes pour installer Express sur Ubuntu:

Si, pour une raison quelconque, la commande NPM est manquante, testez la commande npm avec npm help. Sinon, suivez ces étapes - http://arnolog.net/post/8424207595/installing-node-js-npm-express-mongoose-on-ubuntu

Si la commande Express ne fonctionne pas, essayez:

sudo npm install -g express

Tout a fonctionné comme je suis habitué à Windows7 et OSX.

J'espère que cela t'aides!

Cody
la source
1

Vous devez avoir des privilèges de superutilisateur,

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

Dans Ubuntu, définissez le chemin d'accès de node_modules dans le fichier .bashrc

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

Ratnesh Kushwaha
la source
-5

Il se peut que vous ne disposiez pas des autorisations d'écriture pour installer un module de noeud à l'emplacement global tel que /usr/local/lib/node_modules, auquel cas exécutez le package npm install -g en tant que root.

Dmitri Bouianov
la source