Changer le répertoire d'installation global par défaut pour les modules node.js dans Windows?

134

Dans mon installation de Windows PATHinclut C:\Program Files\nodejs, où l'exécutable node.exeest. Je suis capable de lancer nodedepuis le shell, ainsi que npm. J'aimerais que de nouveaux exécutables soient également installés C:\Program Files\nodejs, mais cela semble impossible à réaliser.

Les paramètres NODE_PATHet les NODE_MODULESvariables ne changent rien: les choses sont toujours installées %appdata%\npmpar défaut.

Comment puis-je modifier le chemin d'installation global?

gremo
la source
5
Probablement parce que gremo veut avoir toutes les dépendances liées à nodejs en un seul endroit. Le problème est qu'avec la mise à jour de nodejs, vous perdriez tous les packages installés. D'un autre côté, placer npm dans le dossier% appdata% de l'utilisateur le rend inaccessible aux autres utilisateurs sur la même machine. Pensez à l'installer en tant qu'utilisateur normal ou administrateur.
Volker E.
1
Sortir de% AppData% vers un emplacement plus contrôlé a beaucoup de sens pour moi, car cela me semble plutôt% temp% -ish. (Faire de même pour les profils Firefox et quelques autres). Cependant, il C:\Program Filesest prêt pour des problèmes de droits d'administration constants. ➪ Je préfère bouger faire D:\my-repository\npmou tel.
Frank Nocke
2
@WiredPrairie car l'installation dans les dossiers utilisateur est à peu près stupide. L'intérêt de l'installation «globale» des packages est qu'un système dans son ensemble peut accéder à ces packages.
Michael Trouw
4
Voici une raison pour cela: sur mon réseau, vous n'êtes pas autorisé à exécuter du code à partir du dossier AppData car c'est souvent ainsi que les logiciels malveillants, en particulier CodeLocker, sont téléchargés et exécutés. C'est une couche supplémentaire de protection contre les logiciels malveillants. Puisque Node installe des choses là-bas, je ne peux pas exécuter les modules de nœud sans déplacer l'emplacement d'installation ou réduire la sécurité de mon système.
Steve Hiner

Réponses:

81

Tout ce dont vous avez besoin est de lire npm-folders documentation . Je ne veux pas commencer mon carnet Win maintenant je ne peux pas vérifier, mais vous ne devez changer prefixpour c:\Program Files\nodejsdans votre fichier de configuration. Si vous souhaitez le modifier globalement pour tous les utilisateurs, modifiez le c:\Program Files\nodejs\npmrcfichier, sinon créez / modifiez c:\Users\{username}\.npmrc.

Mais ce changement aura probablement des effets secondaires, alors lisez cette discussion avant. Je pense que votre idée n'est pas bonne.

Ivoszz
la source
33
J'ai trouvé le npmrcfichier àC:\path\to\nodejs\node_modules\npm\npmrc
Volker E.
3
modifiez également l'emplacement du cache npm dans un répertoire local en utilisant npm config set cache <new cache location> --globalsi vous rencontrez des problèmes lors de l'installation des modules et que le cache est dans un lecteur partagé. J'ai eu cette erreur, ENOENT: no such file or directorylorsque le cache était dans un lecteur partagé
redDevil
1
N'oubliez pas de mettre à jour la variable système PATH pour qu'elle pointe vers le nouveau dossier npm.
Hayko Koryun
64

essayer d'installer des packages globaux dans C:\Program Files (x86)\nodejs\m'a donné des problèmes d'exécution en tant qu'administrateur , car npm essayait d'installer dans
C:\Program Files (x86)\nodejs\node_modules\

pour résoudre ce problème, changez globalement répertoire d'installation par C:\Users\{username}\AppData\Roaming\npm:

dans C:\Users\{username}\, créez un .npmrcfichier avec le contenu:

prefix = "C:\\Users\\{username}\\AppData\\Roaming\\npm"

référence

programme d'
installation de l' environnement nodejs x86 C:\Program Files (x86)\nodejs\sur Windows 7 Ultimate N 64 bits SP1
node --version: v0.10.28
npm --version: 1.4.10

Jake Berger
la source
C'est étrange, j'utilisais npm 2.1.6, et il installait tous les modules globaux dans% appdata% / npm, maintenant que je l'ai mis à jour vers 2.6.1, il essaie (et échoue) d'installer sur c: \ windows \ program files \ .. Savez-vous quand ce comportement a changé?
WORMSS
1
voici quelques différences de wiki sur les nœuds
Jake Berger
il semble que c'était à voir avec une manière différente d'installer npm. Merci pour la différence.
WORMSS
2
npm config set prefix C: \ Users \ {username} \ AppData \ Roaming \ npm
Bernhard Döbler
62

Vous pouvez voir ma réponse à cela dans ma réponse à une autre question .


Sous Windows, le chemin d'installation global se trouve en fait dans le répertoire de profil de votre utilisateur

  • %USERPROFILE%\AppData\Roaming\npm
  • %USERPROFILE%\AppData\Roaming\npm-cache
  • AVERTISSEMENT: si vous effectuez des événements chronométrés ou toute autre automatisation en tant qu'utilisateur différent, assurez-vous d'exécuter npm install tant que cet utilisateur. Certains modules / utilitaires doivent être installés globalement.
  • BOGUES DE L'INSTALLATEUR: Vous devrez peut-être créer ces répertoires ou ajouter vous-même le ...\npmrépertoire au chemin de vos utilisateurs.

Pour changer l'emplacement «global» de tous les utilisateurs en un emplacement global partagé plus approprié %ALLUSERSPROFILE%\(npm|npm-cache)(faites-le en tant qu'administrateur):

  • créé un [NODE_INSTALL_PATH]\etc\ répertoire
    • ceci est nécessaire avant d'essayer des npm config --global ...actions
  • créer le (s) emplacement (s) global (s) pour les modules npm
    • C:\ProgramData\npm-cache - les modules npm iront ici
    • C:\ProgramData\npm - les scripts binaires pour les modules installés globalement iront ici
    • C:\ProgramData\npm\node_modules - les modules installés globalement iront ici
    • définir les autorisations de manière appropriée
      • administrateurs: modifier
      • utilisateurs authentifiés: lecture / exécution
  • Définir les paramètres de configuration globale (invite de commande administrateur)
    • npm config --global set prefix "C:\ProgramData\npm"
    • npm config --global set cache "C:\ProgramData\npm-cache"
  • Ajouter C:\ProgramData\npmà la variable d'environnement Path de votre système

Si vous souhaitez remplacer l'emplacement "global" de votre utilisateur par %LOCALAPPDATA%\(npm|npm-cache)chemin à la place:

  • Créez les répertoires nécessaires
    • C:\Users\YOURNAME\AppData\Local\npm-cache - les modules npm iront ici
    • C:\Users\YOURNAME\AppData\Local\npm - les scripts binaires pour les modules installés iront ici
    • C:\Users\YOURNAME\AppData\Local\npm\node_modules - les modules installés globalement iront ici
  • Configurer npm
    • npm config set prefix "C:\Users\YOURNAME\AppData\Local\npm"
    • npm config set cache "C:\Users\YOURNAME\AppData\Local\npm-cache"
  • Ajoutez le nouveau chemin npm à celui de votre environnement PATH.
    • setx PATH "%PATH%;C:\Users\YOURNAME\AppData\Local\npm"
Tracker1
la source
1
Définir l'emplacement global sur C: \ ProgramData selon votre suggestion du milieu semble être le meilleur endroit pour cela dans un environnement Windows, mais je ne vois pas comment vous pouvez définir le préfixe dans le fichier de configuration globale lorsque le préfixe est utilisé pour recherchez le fichier de configuration global. J'ai obtenu le même résultat en éditant le fichier de configuration intégré C: \ Program Files \ nodejs \ node_modules \ npm \ npmrc mais je soupçonne que ce changement peut être écrasé par une mise à jour à un moment donné.
oenpelli
@oenpelli Dans ce cas, "global" est le .npmrcfichier de votre utilisateur dans le répertoire home / profile. Il devrait être défini pour tous les utilisateurs.
Tracker1
Si je n'ai pas d'autorisation d'administrateur sur Windows, comment puis-je modifier l'installation globale?
liam xu
liam, vous pouvez ajuster cela pour votre utilisateur via un .npmrcfichier dans votre répertoire de profil ... cependant, ymmv à ce stade.
Tracker1
19

Sur la base du concept d'installation chocolateyet de l'idée suggérée par @Tracker, ce qui a fonctionné pour moi était de faire ce qui suit et tous les utilisateurs de Windows étaient alors heureux de travailler avec nodejset npm.

Choisissez C:\ProgramData\nodejscomme répertoire d'installation pour nodejset installez nodejsavec n'importe quel utilisateur membre du groupe administrateur.

Cela peut être fait avec du chocolat comme: choco install nodejs.install -ia "'INSTALLDIR=C:\ProgramData\nodejs'"

Ensuite, créez un dossier appelé npm-cacheà la racine du répertoire d'installation, ce qui serait après avoir suivi ci-dessus C:\ProgramData\nodejs\npm-cache.

Créez un dossier appelé etcà la racine du répertoire d'installation, ce qui serait, après avoir suivi ci-dessus C:\ProgramData\nodejs\etc.

Définissez NODEla variable d'environnement comme C:\ProgramData\nodejs.

Définissez NODE_PATHla variable d'environnement comme C:\ProgramData\nodejs\node_modules.

Assurez-vous que %NODE%la variable d'environnement précédemment créée ci-dessus est ajoutée (ou que son chemin) est ajouté à %PATH%la variable d'environnement.

Modifier %NODE_PATH%\npm\npmrcavec le contenu suivantprefix=C:\ProgramData\nodejs

À partir de l'invite de commande, définissez la configuration globale comme ceci ...

npm config --global set prefix "C:\ProgramData\nodejs"

npm config --global set cache "C:\ProgramData\nodejs\npm-cache"

Il est important que les étapes ci-dessus soient effectuées de préférence en séquence et avant de mettre à jour npm ( npm -g install npm@latest) ou de tenter d'installer un npmmodule.

L'exécution des étapes ci-dessus nous a aidés à fonctionner nodejscomme une installation à l'échelle du système, facilement accessible à tous les utilisateurs avec les autorisations appropriées. Chaque utilisateur peut ensuite exécuter nodeet npmselon les besoins.

Damilola
la source
quelle est la sortie de 'npm config list'. De plus, utilisez-vous Windows ou Linux?
Damilola
Je l'ai essayé sur les deux. npm config add prefixfonctionne, mais aucune des variables d'environnement mentionnées ici. Je ne voulais pas ouvrir une autre question parce que cette question la couvre, mais les réponses ne le font pas (d'ailleurs npm config).
trysis
La variable d'environnement NODE sert essentiellement à exposer les binaires. Vous devez toujours définir le préfixe et le cache (s'ils n'ont pas été définis précédemment) comme indiqué dans la procédure.
Damilola
Oh merci. Ce n'était pas très clair dans les réponses ou ailleurs sur Google. Je cherchais des variables d'environnement car elles sont plus faciles à changer par programme, mais les commandes Bash à une ligne sont également OK, je suppose.
trysis le
Cela a très bien fonctionné pour moi. Merci pour les instructions détaillées!
ErnestoP
15

Vous devez utiliser cette commande pour définir la répartition globale de l'installation des packages npm

(git bash) npm config --global set prefix </path/you/want/to/use>/npm

(cmd / git-cmd) npm config --global set prefix <drive:\path\you\want\to\use>\npm

Vous pouvez également envisager le npm-cache emplacement juste à côté. (comme dans une installation normale de nodejs sur Windows)

(git bash) npm config --global set cache </path/you/want/to/use>/npm-cache

(cmd / git-cmd) npm config --global set cache <drive:\path\you\want\to\use>\npm-cache

Davejoem
la source
1
Heureux de vous aider. Ce serait également une bonne idée de créer un script Shel ou un fichier batch pour l'exécuter pour vous chaque fois que vous changez d'environnement. Au moins c'est ce que je fais
davejoem
Il vaut également la peine d'ajouter "s'il y a des espaces dans le chemin. Ex "C:\Program Files\blah".
taylorswiftfan
7
  • Étape 1 :

    npm config get prefix

    • Le chemin par défaut est: %USERPROFILE%\AppData\Roaming\npm
  • Étape 2 :

    npm config obtenir le cache

    • Le chemin par défaut est: %USERPROFILE%\AppData\Roaming\npm-cache
  • Étape 3 :

    préfixe du jeu de configuration npm \ npm

    • exemple npm config set prefix C:\\dev\\node\\npm
  • Étape 4 :

    npm config set cache \ npm-cache

    • exemple npm config set cache C:\\dev\\node\\npm-cache

Exécutez à nouveau les étapes 1 et 2 pour vérifier si les chemins sont mis à jour selon les besoins

C'est tout. Chaque fois que vous installez des packages globaux, vous devriez les voir installés dans \ npm \ node_modules

Kandeepa
la source
Merci votre solution a résolu mon problème, au cours des 2 dernières semaines, j'essayais de résoudre le problème.En fait, mon chemin utilisateur Windows contenait des espaces comme ABC XYZ WJS, alors j'ai changé le chemin en un seul mot, après cela mon installation npm donnait erreurs, donc votre solution m'aide à vider le cache et à définir le cache sur mon nouvel emplacement.
Tahir Afridi
4

Le dossier global par défaut est C:\Users\{username}\AppData\Roaming\npm. Vous pouvez créer (s'il n'existe pas) un .npmrcfichier dans C:\Users\{username}\et ajouter prefix = "path\\to\\yourglobalfolder". Notez que, dans Windows, le chemin doit être séparé par double back-slash.

angeldsWang
la source
3

L'utilisation d'un lien symbolique Windows depuis les chemins C: \ Users {username} \ AppData \ Roaming \ npm et C: \ Users {username} \ AppData \ Roaming \ npm-cache vers la destination a très bien fonctionné pour moi.

Comment ajouter un lien symbolique

entrez la description de l'image ici

dynamiclynk
la source
1

Sous Windows, si vous souhaitez déplacer le dossier npm ou nodejs du disque C vers un autre emplacement, mais que cela garantit le bon fonctionnement de node et npm, vous pouvez créer un lien symbolique comme ceci: Ouvrez l'invite de commande:

mklink /D "your_location_want_to_create_symlink" "location_of_node_npm_file"

Exemple:

mklink /D "C:\Users\MyUser\AppData\Roaming\npm" "D:\Nodejs Data\npm"

Maintenant que vous avez créé un lien symbolique pour le dossier npm, ce lien symbolique fera référence à D:\Nodejs Data\npmTout fonctionnera bien.

Vinh Trieu
la source
0

J'ai essayé la plupart des réponses ici, rien ne semble fonctionner dans mon cas. J'ai donc changé l'emplacement de la température dans mes variables d'environnement en C: \ npm. Ensuite, cela a commencé à fonctionner. Ce n'est pas une bonne idée mais une solution temporaire.

Manoj
la source
0

Supprimez complètement le dossier de nœuds du dossier de fichiers programme. Désinstallez node.js, puis réinstallez-le. change le chemin de la variable d'environnement PATH. supprimer le fichier .npmrc de C: \ users \ yourusername

Santosh Kadam
la source
2
Avez-vous de la documentation ou des sources à l'appui de votre déclaration? Tel qu'il est écrit dans son état actuel, il est difficile de dire si votre suggestion fonctionne réellement sans l'essayer par vous-même, ce qui prend du temps qui pourrait être économisé autrement.
Filnor
0

cela ne nécessite pas beaucoup de configurations, allez simplement dans les paramètres système avancés, copiez le chemin où vous avez installé votre nœud et créez simplement une variable d'environnement et vérifiez avec la commande node -v dans votre invite!

Animesh Saxena
la source
0

Pour modifier le répertoire d'installation global par défaut des modules node.js (npm) dans Windows, vous devez corriger 2 chemins.

Vérifiez d'abord le chemin actuel où les modules de nœud sont installés, lorsque vous essayez de les installer globalement à l'aide de la commande suivante:

npm liste -g --depth = 0

Il vous renverra le chemin actuel où les modules de nœuds sont en cours d'installation. Exemple: D: \ vsc \ typescript

Maintenant, visitez le chemin suivant pour voir le dossier npm et npm-cache. C: \ Users \ username (OR Number) \ AppData \ Roaming

Dans le dossier Roaming de votre lecteur C, vous trouverez le dossier npm et npm-cache. Cliquez sur le dossier + npm + et sélectionnez le chemin [Cliquez simplement sur le chemin de la barre qui sera sélectionné automatiquement, copiez-le].Ceci est une image de chemin que vous devez sélectionner

Une fois que vous avez copié ce chemin, définissez-le sur les variables d'environnement, avec un nom de variable Path (tout ce que vous pouvez sélectionner comme nom). Maintenant que vous avez défini le chemin de votre dossier npm, il est maintenant temps de définir le préfixe. Allez dans le dossier npm et vérifiez si le dossier node_module existe, sinon créez un nouveau dossier nommé node_modules. Vous tous les modules globaux viendront dans ce dossier après avoir terminé toutes les étapes.

Étape finale: accédez à CMD et à droite la commande suivante:

npm définir le préfixe C: \ Users \ username (Number) \ AppData \ Roaming \ npm \ node_modules

Encore une fois, c'est le même chemin que nous avons sélectionné pour la variable d'environnement, nous ajoutons simplement un autre dossier dans le chemin et c'est node_module.

Tout est prêt ... Essayez maintenant ... Cela fonctionnera.

TechTutsInde
la source
0

Recherchez le chemin actuel de l'installation de votre package de nœud global en suivant la commande.

npm liste -g --depth = 0

Modifiez ce chemin en chemin correct en suivant la commande.

npm définir le préfixe C: \ Users \ username (Number) \ AppData \ Roaming \ npm \ node_modules

Cela a fonctionné pour moi. Lisez ma réponse précédente pour une meilleure compréhension.

TechTutsInde
la source