npm - установить зависимости для пакета в другую папку?


145

У меня следующая структура каталогов:

/some_project
    source.js
    package.json

Я хочу установить зависимости для some_project. Я знаю, что могу записать cd в some_project, а затем запустить npm install

Но мне было интересно, можно ли без смены каталога? Что-то типа

npm install some_project/package.json 

Ответы:


351

Вы можете использовать npm install <folder>вариант с --prefixопцией. В вашем сценарии папка и префикс будут такими же:

npm --prefix ./some_project install ./some_project

4
Это настоящий ответ на вопрос. Спасибо @coudy.
G. Ghez

5
Кстати, он создает пустую etcпапку в месте назначения, это известная ошибка. Github.com/npm/npm/pull/7249
Михаил Радионов

8
Спасибо за этот ответ. Есть ли еще ясность относительно того ./some_project, требуется ли второй ?
Арон

12
второй ./some_projectне требуется
JRJurman

4
Похоже, это не работает для меня в Windows 10. Он устанавливает зависимости в текущий каталог и просто помещает символическую ссылку в подпапку.
Herohtar

46

Обновление: поскольку такая --prefixвозможность существует, я сейчас голосую за ответ @ coudy на этот вопрос. Оригинальный ответ ниже:

Нет, npmвсегда будет устанавливаться в текущий каталог или -gв общесистемные модули node_modules. Вы можете сделать это с помощью подоболочки, которая не повлияет на ваш текущий каталог:

(cd some_project && npm install)

Скобки заставляют его работать в подоболочке .


В конечном итоге это то, что я сделал - cd some_project && npm install. Спасибо
Флорин

1
Есть ли аналог этого для Windows?
Meligy

@Meligy, который вы можете использоватьSTART /D "%my_dir%" /I /WAIT npm install
Everspace


1

В Windows 10 с использованием PowerShell единственное, что у меня сработало без всех проблем и крайних случаев, упомянутых в этом сообщении в блоге, было это

Start-Process -Wait -FilePath "npm" -ArgumentList "install" -WorkingDirectory $web_dir
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.