206 votes

Comment définir un emplacement personnalisé pour l'installation locale d'un paquet npm ?

Est-il possible de spécifier une destination de paquet personnalisée pour npm install par le biais d'un drapeau de commande ou d'une variable d'environnement ?

Par défaut, les installations locales de npm aboutissent dans le répertoire node_modules dans le répertoire actuel, mais je veux qu'elle s'installe dans node_modules dans un autre répertoire, par exemple vendor/node_modules . Comment puis-je faire en sorte que cela se produise ?

197voto

pje Points 4475

TL;DR

Vous pouvez le faire en utilisant l'option --prefix et le --global * drapeau.

pje@friendbear:~/foo $ npm install bower -g --prefix ./vendor/node_modules
bower@0.7.0 /Users/pje/foo/vendor/node_modules/bower

*Même s'il s'agit d'une installation "globale", les bins installés ne seront pas accessibles par la ligne de commande, à moins qu'il ne s'agisse d'une installation globale. ~/foo/vendor/node_modules existe dans PATH .

TL;DR

Chaque attribut configurable de npm peut se dérouler dans six endroits différents. Par ordre de priorité :

  • Drapeaux de ligne de commande : --prefix ./vendor/node_modules
  • Variables d'environnement : NPM_CONFIG_PREFIX=./vendor/node_modules
  • Fichier de configuration utilisateur : $HOME/.npmrc ou userconfig param
  • Fichier de configuration globale : $PREFIX/etc/npmrc ou userconfig param
  • Fichier de configuration intégré : path/to/npm/itself/npmrc
  • Configuration par défaut : node_modules/npmconf/config-defs.js

Par défaut, les paquets installés localement sont placés dans le répertoire ./node_modules . les globaux vont dans le prefix variable de configuration ( /usr/local par défaut).

Vous pouvez exécuter npm config list pour voir votre configuration actuelle et npm config edit pour le changer.

PS

En général, npm La documentation de la Commission européenne est très utile. Le site dossiers est une bonne vue d'ensemble de la structure de npm et de l'interface utilisateur. config répond à cette question.

36voto

Rimian Points 7805

Si vous voulez que cela soit dans la configuration, vous pouvez définir la configuration npm comme suit :

npm config set prefix "$(pwd)/vendor/node_modules"

ou

npm config set prefix "$HOME/vendor/node_modules"

Vérifiez votre configuration avec

npm config ls -l

Ou comme @pje le dit et utiliser le --prefix drapeau

16voto

Ryan Points 61

Pour OSX, vous pouvez aller dans le dossier de votre utilisateur. $HOME (probablement /Users/yourname/) et, s'il n'existe pas déjà, créez un fichier .npmrc (un fichier que npm utilise pour la configuration des utilisateurs), et créez un répertoire dans lequel vos paquets npm seront installés (par exemple, /Users/yourname/npm). Dans ce fichier .npmrc, définissez "prefix" comme votre nouveau répertoire npm, dans lequel seront installés les paquets npm "globaux" ; ces paquets "globaux" ne seront évidemment disponibles que pour votre compte utilisateur.

Dans .npmrc :

prefix=${HOME}/npm

Ensuite, exécutez cette commande depuis la ligne de commande :

npm config ls -l

Cela devrait donner des résultats à la fois sur votre propre configuration locale et sur la configuration globale de npm, et vous devriez voir votre configuration de préfixe local reflétée, probablement en haut de la longue liste de résultats.

Pour des raisons de sécurité, je recommande cette approche pour configurer le comportement de votre compte d'utilisateur vis-à-vis de npm plutôt que de choisir votre /usr/local que j'ai vu recommandé ailleurs.

10voto

MichaelHuelsen Points 326

Sous Windows 7 par exemple, l'ensemble de commandes/opérations suivant pourrait être utilisé.

Créer une variable d'environnement personnelle, les doubles backslashes sont obligatoires :

  • Nom de la variable : %NPM_HOME%
  • Valeur variable : C:\\SomeFolder\\SubFolder\\

Maintenant, définissez les valeurs de configuration pour les nouveaux dossiers (noms de fichiers par exemple) :

  • Définir le dossier npm

npm config set prefix "%NPM_HOME%\\npm"

  • Définir le dossier npm-cache

npm config set cache "%NPM_HOME%\\npm-cache"

  • Définir le dossier temporaire de npm

npm config set tmp "%NPM_HOME%\\temp"

En option, vous pouvez purger le contenu des dossiers d'origine. avant la configuration est modifiée.

  • Supprimer le npm-cache npm cache clear

  • Lister les modules npm npm -g ls

  • Supprimer les modules npm npm -g rm name_of_package1 name_of_package2

8voto

Boblet Points 1148

Après avoir cherché cela moi-même en voulant que plusieurs projets avec des dépendances partagées soient plus DRY, j'ai trouvé :

  • L'installation locale est la méthode Node pour tout ce que vous voulez utiliser par l'intermédiaire de require()
  • L'installation globale est pour les binaires que vous voulez dans votre chemin, mais n'est pas destinée à quoi que ce soit par l'intermédiaire de require()
  • L'utilisation d'un préfixe signifie qu'il faut ajouter les éléments suivants bin y man des chemins pour $PATH
  • npm link ( info ) vous permet d'utiliser une installation locale comme source pour les globales.

→ s'en tenir à la méthode Node et installer localement

réf :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X