Comment puis-je installer les dépendances de package.json dans le répertoire courant en utilisant NPM
-
27-10-2019 - |
Question
J'ai une application web: fooapp . J'ai un package.json
à la racine. Je veux installer toutes les dépendances dans un node_modules directory
spécifique. Comment puis-je faire?
Ce que je veux
Disons que j'ai deux dépendances de widget
. Je veux finir avec une structure de répertoire comme ceci:
node_modules/
widgetA
widgetB
fooapp/
package.js
lib
..
Qu'est-ce que je reçois
quand je lance npm install fooapp/
je reçois ceci:
node_modules/
fooapp/
node_modules/
widgetA
widgetB
package.js
lib/
..
fooapp/
package.js
lib/
..
NPM fait une copie de mon répertoire app dans le node_modules dir et installe les paquets dans une autre node_modules répertoire.
Je comprends cela a un sens pour l'installation d'un package. Mais je ne require()
mon application web à l'intérieur de quelque chose d'autre, je lance directement. Je suis à la recherche d'un moyen simple d'installer mes dépendances dans un répertoire spécifique node_modules.
La solution
Exécution:
npm install
de l'intérieur de votre répertoire d'applications (à savoir où se trouve package.json) installera les dépendances pour votre application, plutôt que de l'installer en tant que module, comme décrit ici . Ceux-ci seront placés dans ./node_modules par rapport à votre fichier package.json (il est en fait un peu plus complexe que cela, afin de vérifier les MNP docs ).
Vous êtes libre de déplacer le node_modules dir au répertoire parent de votre application si vous voulez, parce que le mécanisme de « besoin » de noeud comprend. Toutefois, si vous souhaitez mettre à jour vos dépendances d'applications avec l'installation / mise à jour, NPM ne verra pas les « délocalisés node_modules » et au lieu de créer un nouveau répertoire, de nouveau par rapport à package.json.
Pour éviter cela, il suffit de créer un lien symbolique vers les node_modules délocalisés à partir de votre application dir:
ln -s ../node_modules node_modules
Autres conseils
Dans mon cas, je dois faire
sudo npm install
mon projet est dans / var / www donc je dois aussi définir des autorisations appropriées.