Как установить зависимости package.json в текущем каталоге с помощью npm

У меня есть веб-приложение: 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.

Ответ 1

Продолжительность:

npm install

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

Вы можете перемещать директорию node_modules в родительский каталог вашего приложения, если хотите, потому что механизм node 'require' понимает это. Однако, если вы хотите обновить зависимости приложений с помощью установки/обновления, npm не увидит перемещенный "node_modules" и вместо этого создаст новый каталог, опять же относительно package.json.

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

ln -s ../node_modules node_modules

Ответ 2

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

sudo npm install  

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