Existe-t-il un moyen de déplacer le répertoire node_modules dans une application vers/vendor/node_modules comme le fait bower avec le fichier bowerrc? Je pensais que cela pourrait être spécifié dans package.json mais je n'arrive pas à trouver de solution. Votre aide est très appréciée.
oui, vous pouvez simplement définir la variable env NODE_PATH:
export NODE_PATH='yourdir'/node_modules
Selon le doc:
Si la variable d'environnement NODE_PATH est définie sur une liste de chemins absolus délimités par des deux-points, le noeud recherchera les modules s'ils ne sont pas trouvés ailleurs. (Remarque: sous Windows, NODE_PATH est délimité par des points-virgules au lieu de deux-points.)
De plus, le noeud recherchera dans les emplacements suivants:
1: $ HOME/.node_modules
2: $ HOME/.node_libraries
3: $ PREFIX/lib/node
Où $ HOME est le répertoire de base de l'utilisateur et $ PREFIX est le préfixe de nœud configuré du nœud.
Ce sont principalement pour des raisons historiques. Nous vous conseillons vivement de placer vos dépendances localement dans des dossiers node_modules. Elles seront chargées plus rapidement et de manière plus fiable.
En bref: ce n'est pas possible, et il semble qu'il ne sera jamais supporté (voir ici https://github.com/npm/npm/issues/775 ).
Il y a quelques arrêts avec l'utilisation des variables CLI ou ENV (voir la réponse actuellement sélectionnée), .npmrc-Config-Files ou npm link
- ce qu'ils ont tous en commun: ils ne sont jamais seulement spécifiques à un projet. , mais toujours une sorte de global
Solutions.
Pour moi, aucune de ces solutions n'est vraiment propre, car les contributeurs à votre projet doivent toujours créer une configuration spéciale ou posséder des connaissances particulières - ils ne peuvent pas simplement npm install
et cela fonctionne.
Donc: vous devrez soit placer votre package.json dans le même répertoire que celui où vous souhaitez installer vos node_modules, soit vivre avec le fait qu’ils seront toujours dans le répertoire racine de votre projet.
Je ne sais pas si c'est ce que vous aviez à l'esprit, mais j'ai fini par répondre à cette question car je ne pouvais pas installer _node_modules
_ dans mon répertoire de projet, car il était monté sur un système de fichiers ne prenant pas en charge les liens VM "dossier").
J'ai trouvé la solution suivante:
project.json
_ dans un dossier temporaire sur un système de fichiers différent.npm install
_ lànode_modules
_ résultant dans le répertoire du projet, en utilisant _cp -r --dereference
_ pour développer les liens symboliques en copies.J'espère que cela aidera quelqu'un d'autre qui finira par répondre à cette question lorsqu'il cherchera un moyen de déplacer _node_modules
_ vers un autre système de fichiers.
Il existe une autre solution de contournement, qui j'ai trouvé sur le problème github que @Charminbear est lié à , mais cela ne fonctionne pas avec grunt
car il ne prend pas en charge _NODE_PATH
_ comme - https://github.com/browserify/resolve/issues/136 :
disons que vous avez _
/media/sf_shared
_ et que vous ne pouvez pas y installer de liens symboliques, ce qui signifie que vous ne pouvez pas réellement installer npm à partir de _/media/sf_shared/myproject
_ car certains modules utilisent des liens symboliques.
- _
$ mkdir /home/dan/myproject && cd /home/dan/myproject
_- _
$ ln -s /media/sf_shared/myproject/package.json
_ (vous pouvez créer un lien symbolique dans cette direction, vous ne pouvez pas en créer un dans/media/sf_shared)- _
$ npm install
_- _
$ cd /media/sf_shared/myproject
_- _
$ NODE_PATH=/home/dan/myproject/node_modules node index.js
_
Le fil prend en charge cette fonctionnalité:
# .yarnrc file in project root
--modules-folder /node_modules
Mais votre expérience peut varier en fonction des packages que vous utilisez. Je ne suis pas sûr que vous vouliez aller dans ce terrier de lapin.