web-dev-qa-db-fra.com

Où dois-je installer les modules npm sur Mac OS X?

J'essayais de mettre à niveau phonegap via npm lorsque j'ai commencé à avoir des problèmes. Bref, il y a deux répertoires node_modules sur mon ordinateur.

/usr/local/lib/node_modules
/usr/local/share/npm/lib/node_modules

Lorsque j'exécute npm upgrade -g phonegap, il apparaît que npm met à jour la copie du package qui réside dans /usr/local/lib/node_modules. Cependant, si je which phonegap je constate que le lien symbolique pointe vers l'ancienne installation à /usr/local/share/npm/lib/node_modules.

De plus, lorsque j'essaie d'installer un paquet autonome tel que express, les fichiers sont installés dans le répertoire /usr/local/lib/node_modulesmais aucun lien symbolique vers l'exécutable n'est créé nulle part dans mon $PATH.

Deux questions:

  • Quel est le répertoire approprié pour les modules de nœuds sous Mac OS X?
  • Comment configurer npm pour lier les exécutables dans mon $PATH lorsqu’il installe un logiciel?

Points bonus: La méthode d'installation de node affecte-t-elle la configuration? Il y a un beaucoup d'options .


EDIT: J'ai découvert que des liens symboliques étaient créés dans mon /usr/local/bin, mais mon .bash_profile était configuré avec /usr/local/share/npm/bin devant /usr/local/bin dans mon $PATH. Je me souviens vaguement avoir ajouté ce chemin à mon profil à un moment donné, mais je ne sais pas pourquoi.

La question est donc de savoir comment je me suis retrouvé avec deux répertoires node_modules différents sur mon ordinateur et pourquoi voudrais-je que mon node_modules se trouve dans le sous-répertoire share/npm/lib au lieu d'être situé à droite dans /usr/local/lib

46
Ben Harold

/usr/local/lib/node_modules est le répertoire correct pour les modules de nœud installés globalement.

/usr/local/share/npm/lib/node_modules n'a aucun sens pour moi. Un problème ici est que vous êtes confus car il existe deux répertoires appelés node_modules :

/usr/local/lib/node_modules
/usr/local/lib/node_modules/npm/node_modules

Ce dernier semble être un module de noeud fourni avec Node, par exemple, lodash, lorsque ce dernier est un module de noeud que j'ai installé avec npm.

76
Thomas David Kehoe

Deuxième Thomas David Kehoe , avec l'avertissement suivant -

Si vous utilisez le gestionnaire de version de noeud (nvm), vos modules de noeud globaux seront stockés sous la version de noeud que vous utilisez au moment où vous avez enregistré le module. 

Alors ~/.nvm/versions/node/{version}/lib/node_modules/.

37
ginna
npm root -g

pour vérifier l'emplacement global de npm_modules

3
lazyTank

enter image description here

Appuyez sur CMD + Maj G et collez cette URL.

Le dossier usr est masqué, il n'est donc pas visible lorsque vous effectuez une recherche.

0
Raaj Kanchan

Si vous souhaitez connaître l'emplacement de vos packages NPM, vous devez:

which npm // locate a program file in the user's path SEE man which
// OUTPUT SAMPLE
/usr/local/bin/npm
la /usr/local/bin/npm // la: aliased to ls -lAh SEE which la THEN man ls
lrwxr-xr-x  1 t04435  admin    46B 18 Sep 10:37 /usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js

Donc, étant donné que npm est un package NODE lui-même, il est installé au même emplacement que les autres packages (EUREKA). Donc, pour confirmer vous devriez aller dans node_modules et lister le répertoire.

cd /usr/local/lib/node_modules/
ls
#SAMPLE OUTPUT
@angular npm .... all global npm packages installed

OR

npm -root -g

Selon le commentaire de @anthonygore

0
T04435