Est-il possible de spécifier une destination de package personnalisée pour npm install
, via un indicateur de commande ou une variable d'environnement?
Par défaut, les installations locales de npm se terminent node_modules
dans le répertoire actuel, mais je veux qu'il s'installe dans node_modules
un répertoire différent, par exemple vendor/node_modules
. Comment puis-je y arriver?
./node_modules
, je veux que npm les installe dans les sous-répertoires de./vendor/node_modules
. (Ou se faire dire que ce n'est pas configurable.)require
d) mais je ne veux pas l'installer globalement.Réponses:
TL; DR
Vous pouvez le faire en utilisant l'
--prefix
indicateur et l'--global
indicateur *.* Même s'il s'agit d'une installation "globale", les chutiers installés ne seront pas accessibles via la ligne de commande sauf s'ils
~/foo/vendor/node_modules
existent dansPATH
.TL; R
Chaque attribut configurable de
npm
peut être défini dans l'un des six emplacements différents. Par ordre de priorité:--prefix ./vendor/node_modules
NPM_CONFIG_PREFIX=./vendor/node_modules
$HOME/.npmrc
ouuserconfig
param$PREFIX/etc/npmrc
ouuserconfig
parampath/to/npm/itself/npmrc
Par défaut, les packages installés localement vont dans
./node_modules
. les globales vont dans laprefix
variable de configuration (/usr/local
par défaut).Vous pouvez exécuter
npm config list
pour voir votre configuration actuelle et lanpm config edit
modifier.PS
En général,
npm
la documentation de est vraiment utile. La section des dossiers est un bon aperçu structurel de npm et la section de configuration répond à cette question.la source
./vendor/node_modules/lib/bower
utilisantnpm#3.8.0
No version provided in package.json
bins won't be accessible through the command line
. Le programme peut bien sûr être appelé en utilisant le chemin completnpm install [email protected] -g --prefix c:\my_npm` calling
c: \ my_npm \ eslint --fix my.js`npm install
dans le répertoire A avec le fichier package.json, les packages seront installés dans le répertoire B. Il semble que cette solution concerne les packages individuels en cours d'installation.npm install
installe les dépendances localement.npm install X -g -prefix "..."
installe le module X sur le préfixe,npm install -g -prefix "..."
installe le package actuel sur le préfixe.Si vous voulez cela dans la configuration, vous pouvez définir la configuration de npm comme suit:
ou
Vérifiez votre configuration avec
npm config ls -l
Ou comme @pje le dit et utilisez le
--prefix
drapeaula source
npm install
installera toujours localement./node_modules
maisnpm install -g
installera sur"$(pwd)/vendor/node_modules"
. Je peux imaginer les paramètres en l'oubliant puis en revenant plus tard en me demandant pourquoi mes packages globaux agissent bizarrement.Pour OSX, vous pouvez accéder à votre utilisateur
$HOME
(probablement / Users / yourname /) et, s'il n'existe pas déjà, créer un.npmrc
fichier (un fichier que npm utilise pour la configuration de l'utilisateur) et créer un répertoire pour vos packages npm pour être installé dans (par exemple, / Users / yourname / npm). Dans ce fichier .npmrc, définissez "prefix" sur votre nouveau répertoire npm, qui sera l'endroit où les packages npm installés "globalement" seront installés; ces packages "globaux" ne seront évidemment disponibles que sur votre compte utilisateur.Dans .npmrc:
prefix=${HOME}/npm
Ensuite, exécutez cette commande à partir de 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 de npm, et vous devriez voir votre configuration de préfixe local reflétée, probablement vers le haut de la longue liste de sortie.
Pour des raisons de sécurité, je recommande cette approche pour configurer le comportement npm de votre compte d'utilisateur sur la configuration de vos
/usr/local
dossiers, ce que j'ai vu recommandé ailleurs.la source
Sur Windows 7 par exemple, l'ensemble de commandes / opérations suivant peut être utilisé.
Créez une variable d'environnement personnelle, les doubles barres obliques inverses sont obligatoires:
%NPM_HOME%
C:\\SomeFolder\\SubFolder\\
Maintenant, définissez les valeurs de configuration sur les nouveaux dossiers (exemples de noms de fichiers):
npm config set prefix "%NPM_HOME%\\npm"
npm config set cache "%NPM_HOME%\\npm-cache"
npm config set tmp "%NPM_HOME%\\temp"
Vous pouvez éventuellement purger le contenu des dossiers d'origine avant que la configuration ne soit 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
la source
Après avoir cherché cela moi-même en voulant que plusieurs projets avec des dépendances partagées soient DRYer, j'ai trouvé:
require()
require()
bin
etman
vers$PATH
npm link
( info ) vous permet d'utiliser une installation locale comme source pour les globaux→ s'en tenir à la méthode Node et installer localement
réf:
la source