Как установить зависимости package.json в текущем каталоге с помощью npm - PullRequest
176 голосов
/ 03 декабря 2011

У меня есть веб-приложение: fooapp . У меня package.json в корне. Я хочу установить все зависимости в определенном node_modules directory. Как мне это сделать?

Что я хочу

Допустим, у меня есть две widget зависимости. Я хочу закончить со структурой каталогов, как это:

node_modules/
  widgetA
  widgetB
fooapp/
  package.js
  lib
  ..

Что я получу

когда я запускаю npm install fooapp/ я получаю это:

node_modules/
  fooapp/
    node_modules/
      widgetA
      widgetB
    package.js
    lib/
    ..
fooapp/
  package.js
  lib/
  ..

npm делает копию каталога моего приложения в каталоге node_modules и устанавливает пакеты внутри другого каталога node_modules.

Я так понимаю, это имеет смысл для установки пакета. Но я не require() мое веб-приложение внутри чего-то другого, я запускаю его напрямую. Я ищу простой способ установки моих зависимостей в определенный каталог node_modules.

Ответы [ 2 ]

341 голосов
/ 04 декабря 2011

Запуск:

npm install

из каталога вашего приложения (т. Е. Там, где расположен package.json) установит зависимости для вашего приложения, а не установит его как модуль, как описано здесь .Они будут помещены в ./node_modules относительно вашего файла package.json (на самом деле он немного сложнее, поэтому проверьте здесь документы npm ).

Вы можете свободно перемещатьЕсли вы хотите, каталог_узлов должен указывать на родительский каталог вашего приложения, потому что механизм 'требовать' узла понимает это.Однако, если вы хотите обновить зависимости вашего приложения с помощью install / update, npm не увидит перемещенные «node_modules» и вместо этого создаст новый каталог, опять-таки относительно package.json.

Чтобы предотвратить это, простосоздайте символическую ссылку на перемещенные node_modules из директории вашего приложения:

ln -s ../node_modules node_modules
13 голосов
/ 06 ноября 2013

В моем случае мне нужно сделать

sudo npm install  

мой проект находится внутри / var / www, поэтому мне также нужно установить правильные разрешения.

...