Можно ли указать целевой каталог при запуске npm install <package>?
В документации указано: Используйте опцию префикса вместе с глобальным параметром:
Конфигурация префикса по умолчанию соответствует местоположению, где установлен узел. В большинстве систем это / usr / local. В окнах это точное местоположение двоичного файла node.exe. В Unix-системах это один уровень вверх, поскольку узел обычно устанавливается в {prefix} / bin / node, а не в {prefix} /node.exe. Когда глобальный флаг установлен, npm устанавливает вещи в этот префикс. Когда он не установлен, он использует корень текущего пакета или текущий рабочий каталог, если он уже не в пакете.(Emphasis by them)
Итак, в корневом каталоге вы можете установить с помощью
npm install --prefix <path/to/prefix_folder> -g
и установить папку node_modules в папку
<path/to/prefix_folder>/lib/node_modules
Начиная с версии npm версии 3.8.6 вы можете использовать
npm install --prefix ./install/here <package>
для установки в указанном каталоге. NPM автоматически создает папку node_modules, даже если каталог node_modules уже существует в иерархии более высокого уровня. Вы также можете иметь package.json в текущем каталоге, а затем установить его в указанном каталоге с помощью опции --prefix:
npm install --prefix ./install/here
Начиная с версии npm 6.0.0 вы можете использовать
npm install --prefix ./install/here ./
, чтобы установить package.json в текущий каталог в каталог «./install/here». Есть одна вещь, которую я заметил на Mac, что она создает символическую ссылку на родительскую папку внутри каталога node_modules. Но это все еще работает.
ПРИМЕЧАНИЕ. NPM выполняет оценку пути, который вы указали с помощью опции --prefix. Он разрешается в соответствии с документацией npm по папкам, только когда npm install используется без опции --prefix.