Как установить зависимости 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, поэтому мне также нужно установить правильные разрешения.