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 cela?
Disons que j'ai deux dépendances widget
. Je veux me retrouver avec une structure de répertoire comme celle-ci:
node_modules/
widgetA
widgetB
fooapp/
package.js
lib
..
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 crée une copie de mon répertoire app dans le répertoire node_modules et installe les packages à l'intérieur d'un autre répertoire node_modules.
Je comprends que cela a du sens pour installer un paquet. Mais je ne require()
pas mon application Web à l'intérieur d'autre chose, je l'exécute directement. Je cherche un moyen simple d'installer mes dépendances dans un répertoire node_modules spécifique.
Fonctionnement:
npm install
depuis votre répertoire d'application (c'est-à-dire où se trouve package.json), les dépendances installées pour votre application, plutôt que de l'installer sous forme de module, - comme décrit ici . Ceux-ci seront placés dans ./node_modules par rapport à votre fichier package.json (il est en fait légèrement plus complexe que cela, alors vérifiez les documents npm ici ).
Vous êtes libre de déplacer le répertoire node_modules vers le répertoire parent de votre application si vous le souhaitez, car le mécanisme "require" du nœud le comprend. Toutefois, si vous souhaitez mettre à jour les dépendances de votre application avec install/update, npm ne verra pas les 'nœuds_modules' déplacés et créera un nouveau répertoire, à nouveau relatif à package.json.
Pour éviter cela, créez simplement un lien symbolique vers les node_modules déplacés depuis votre répertoire d'application:
ln -s ../node_modules node_modules
Dans mon cas je dois faire
Sudo npm install
mon projet se trouve dans/var/www, je dois donc également définir les autorisations appropriées.