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
Coudy
источник
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 я не мог приступить --prefixк работе, поэтому мне пришлось cdвыполнить ее.

cd PATH_TO_FOLDER && npm install 
Йоаннес Гейслер
источник
1

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

Start-Process -Wait -FilePath "npm" -ArgumentList "install" -WorkingDirectory $web_dir
узкое место
источник