Existe-t-il un moyen de déplacer le répertoire node_modules dans une application pour dire / vendor / node_modules comme le fait bower avec le fichier bowerrc? Je pensais que cela pouvait être spécifié dans package.json mais je n'arrive pas à trouver une solution. Votre aide est très appréciée.
96
node_modules
inpackage.json
, et la réponse de xShirase ne fournit tout simplement pas un moyen de le faire.Réponses:
oui vous pouvez, définissez simplement la variable d'environnement NODE_PATH:
export NODE_PATH='yourdir'/node_modules
D'après le doc:
La source
la source
process.env
En bref: ce n'est pas possible et, comme il semble, ne sera jamais pris en charge (voir ici https://github.com/npm/npm/issues/775 ).
Il y a des solutions de travail hacky avec l'utilisation de la CLI ou des variables 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 au projet, mais toujours d'une certaine sorte desglobal
solutions.Pour moi, aucune de ces solutions n'est vraiment propre car les contributeurs à votre projet ont toujours besoin de créer une configuration spéciale ou d'avoir des connaissances particulières - ils ne peuvent pas simplement
npm install
et cela fonctionne.Donc: Soit vous devrez mettre votre package.json dans le même répertoire où vous voulez que vos node_modules soient installés, soit vivre avec le fait qu'ils seront toujours dans le répertoire racine de votre projet.
la source
Yarn 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 entrer dans ce terrier de lapin.
la source
Je ne sais pas si c'est ce que vous aviez à l'esprit, mais je me suis retrouvé sur cette question car je n'ai pas pu installer
node_modules
dans le répertoire de mon projet car il était monté sur un système de fichiers qui ne supportait pas les liens symboliques (un dossier «partagé» VM ).J'ai trouvé la solution de contournement suivante:
package.json
fichier dans un dossier temporaire sur un système de fichiers différentnpm install
lànode_modules
répertoire résultant dans le répertoire du projet, en utilisantcp -r --dereference
pour développer les liens symboliques en copies.J'espère que cela aidera quelqu'un d'autre qui se retrouvera sur cette question en cherchant un moyen de passer
node_modules
à un système de fichiers différent.Autres options
Il existe une autre solution de contournement, que j'ai trouvée sur le problème github auquel @Charminbear est lié , mais cela ne fonctionne pas
grunt
car il ne prend pas en chargeNODE_PATH
selon https://github.com/browserify/resolve/issues/136 :la source