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

est-il possible de spécifier la destination d'un paquet personnalisé pour npm install , soit par un drapeau de commande, soit par une variable d'environnement?

par défaut, les installations npm locales finissent par node_modules dans le répertoire courant, mais je veux qu'il s'installe dans node_modules dans un répertoire différent, par exemple vendor/node_modules . Comment puis-je le faire?

126
demandé sur MobileDream 2013-02-07 06:30:02

5 réponses

TL; DR

vous pouvez le faire en utilisant le drapeau --prefix et le drapeau --global *.

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 bacs installés ne seront pas accessibles par la ligne de commande à moins que ~/foo/vendor/node_modules n'existe dans PATH .

TL; R

chaque attribut configurable de npm peut être défini dans l'un des six endroits différents. Dans l'ordre de priorité:

  • Drapeaux En Ligne De Commande: --prefix ./vendor/node_modules
  • Variables D'Environnement: NPM_CONFIG_PREFIX=./vendor/node_modules
  • fichier de configuration de L'utilisateur: $HOME/.npmrc ou userconfig param
  • Global Fichier de configuration: $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 vont dans ./node_modules . celles globales vont dans la variable de configuration prefix ( /usr/local par défaut).

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

PS

en général, npm de la documentation est vraiment utile. La section dossiers est une bonne vue d'ensemble de la structure de npm et la section config répond à cette question.

145
répondu pje 2015-02-19 22:21:38

si vous voulez cela dans config, vous pouvez définir npm config 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 dit et utilisez le --prefix drapeau

23
répondu Rimian 2015-01-29 02:04:00

pour OSX, vous pouvez aller sur le $HOME de votre utilisateur (probablement /Users/yourname/) et, s'il n'existe pas déjà, créer un fichier .npmrc (un fichier que la npm utilise pour la configuration de l'utilisateur), et créer un répertoire pour vos paquets npm à installer dans (par exemple, /Users/yourname/npm). Dans que .npmrc fichier, définir "prefix" à votre nouveau répertoire npm, qui sera l'endroit où les paquets npm installés" globalement "seront installés; ces paquets" globaux " seront, évidemment, disponibles seulement pour votre compte d'utilisateur.

In .npmrc:

prefix=${HOME}/npm

lancez ensuite cette commande depuis la ligne de commande:

npm config ls -l

il devrait donner une sortie à la fois sur votre propre configuration locale et sur la configuration globale npm, et vous devriez voir votre configuration de préfixe locale réfléchie, probablement en haut de la longue liste de sortie.

pour la sécurité, je recommande ceci approche pour configurer le comportement npm de votre compte d'utilisateur sur la conversion de vos dossiers /usr/local , que j'ai vu recommandé ailleurs.

8
répondu Ryan 2015-07-28 00:45:56

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

  • installer localement est le mode Nodal pour tout ce que vous voulez utiliser via require()
  • installer globalement est pour les binaires que vous voulez dans votre chemin, mais n'est pas destiné à quoi que ce soit via require()
  • L'utilisation d'un préfixe signifie que vous devez ajouter les chemins appropriés bin et man pour $PATH
  • npm link ( info ) vous permet d'utiliser une installation locale comme source pour globals

→ coller au chemin du noeud et installer localement

réf:

4
répondu Oli Studholme 2013-11-14 10:31:13

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

créer une variable d'environnement personnel, double backslashes sont obligatoires:

  • nom Variable: %NPM_HOME%
  • valeur Variable: C:\SomeFolder\SubFolder\

maintenant, définissez les valeurs de configuration aux nouveaux dossiers (noms de fichiers illustrés):

  • Définir le mécanisme national de prévention dossier

npm config set prefix "%NPM_HOME%\npm"

  • définir le dossier npm-cache

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

  • Définir le mnp dossier temporaire

npm config set tmp "%NPM_HOME%\temp"

en option, vous pouvez purger le contenu des dossiers originaux avant la configuration est modifiée.

  • supprimer le npm-cache npm cache clear

  • Liste des modules npm npm -g ls

  • supprimer les modules npm npm -g rm name_of_package1 name_of_package2

4
répondu MichaelHuelsen 2017-02-07 13:50:20