web-dev-qa-db-fra.com

Comment installer les dépendances package.json dans le répertoire en cours à l'aide de npm

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?

Ce que je veux

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
  ..

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 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.

180
Daniel Beardsley

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
350
ireddick

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.

13
aesede