Ответы:
Вы можете использовать --prefixопцию:
mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>
Пакеты будут установлены в ./install/here/node_modules. Это mkdirнеобходимо, так как в противном случае npm может выбрать уже существующий node_modulesкаталог выше по иерархии. (См. Документацию npm к папкам .)
npm install(без имени пакета)? Я сделал это напрямую, но затем npm ищет package.jsonв {prefix}. Я также хочу, чтобы у вас была возможность войти packages.jsonв корневой каталог проекта и одновременно установить все пакеты {project root}/{project webroot}.
npm install, но --prefixкажется более удачным решением, если оно не вызывало рекурсию.
В документации сказано: используйте опцию префикса вместе с опцией global :
Префикс конфиг по умолчанию в том месте , где установлен узел. В большинстве систем это / usr / local . В Windows это точное местоположение двоичного файла node.exe. В системах Unix это на один уровень выше, поскольку узел обычно устанавливается в {prefix} / bin / node, а не в {prefix} /node.exe .
Когда глобальный флаг установлен, npm устанавливает вещи в этот префикс. Когда он не задан, он использует корень текущего пакета или текущий рабочий каталог, если его еще нет в пакете.
(Акцент ими)
Таким образом, в вашем корневом каталоге вы можете установить с
npm install --prefix <path/to/prefix_folder> -g
и он установит node_modulesпапку в папку
<path/to/prefix_folder>/lib/node_modules
requireустановить пакеты глобально, не так ли?
Начиная с версии 3.8.6 npm, вы можете использовать
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опции.
Can't install <current directory>: Missing package name
package.jsonфайл./install/here