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 dans node_modules
dans le répertoire actuel, mais je souhaite l’installer dans node_modules
dans un autre répertoire, par exemple vendor/node_modules
. Comment puis-je y arriver?
Vous pouvez le faire en utilisant les indicateurs --prefix
et --global
*.
pje@friendbear:~/foo $ npm install bower -g --prefix ./vendor/node_modules
[email protected] /Users/pje/foo/vendor/node_modules/bower
* Même s'il s'agit d'une installation "globale", les répertoires installés ne seront pas accessibles via la ligne de commande, sauf si ~/foo/vendor/node_modules
existe dans PATH
.
Chaque attribut configurable de npm
peut être défini dans six emplacements différents. Par ordre de priorité:
--prefix ./vendor/node_modules
NPM_CONFIG_PREFIX=./vendor/node_modules
$HOME/.npmrc
ou userconfig
param$PREFIX/etc/npmrc
ou userconfig
parampath/to/npm/itself/npmrc
Par défaut, les packages installés localement sont placés dans ./node_modules
. les variables globales vont dans la variable prefix
config (/usr/local
par défaut).
Vous pouvez exécuter npm config list
pour afficher votre configuration actuelle et npm config edit
pour le modifier.
En général, la documentation de npm
est vraiment utile. La section dossiers est un bon aperçu structurel de npm et la section config répond à cette question.
Si vous le souhaitez 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 le dit et utilise le drapeau --prefix
Pour OSX, vous pouvez accéder à $HOME
de votre utilisateur (probablement/Utilisateurs/votre nom /) et, s'il n'existe pas déjà, créer un fichier .npmrc
(fichier que npm utilise pour la configuration de l'utilisateur). et créez un répertoire dans lequel installer vos paquets npm (par exemple,/Users/votrenom/npm). Dans ce fichier .npmrc, définissez "prefix" sur votre nouveau répertoire npm, qui sera l'emplacement d'installation des packages npm "globalement"; ces packages "globaux" ne seront évidemment disponibles que pour votre compte utilisateur.
En .npmrc:
prefix=${HOME}/npm
Puis exécutez cette commande à partir de la ligne de commande:
npm config ls -l
Cela devrait donner une sortie à la fois sur votre propre configuration locale et sur la configuration globale de npm, et vous devriez voir la configuration de votre préfixe local reflétée, probablement en haut de la longue liste de sorties.
Pour des raisons de sécurité, je recommande cette approche pour configurer le comportement npm de votre compte utilisateur au-dessus du chown-ing de vos dossiers /usr/local
, ce que j'ai vu recommandé ailleurs.
Sous Windows 7, par exemple, vous pouvez utiliser l'ensemble de commandes/opérations suivant.
Créez une variable d’environnement personnel, les doubles barres obliques inverses sont obligatoires:
%NPM_HOME%
C:\\SomeFolder\\SubFolder\\
Maintenant, définissez les valeurs de configuration sur les nouveaux dossiers (noms de fichiers exemple):
npm config set prefix "%NPM_HOME%\\npm"
npm config set cache "%NPM_HOME%\\npm-cache"
npm config set tmp "%NPM_HOME%\\temp"
Eventuellement, vous pouvez purger le contenu des dossiers originaux 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
Après avoir recherché moi-même plusieurs projets avec des dépendances partagées comme DRYer, j'ai trouvé:
require()
require()
bin
et man
vers $PATH
npm link
( info ) vous permet d'utiliser une installation locale comme source de globals→ respectez le chemin Node et installez-le localement
ref: