Что делает & ldquo; - prefix & rdquo; укажите [dубликат]

Можно ли указать целевой каталог при запуске npm install <package>?

172
задан 23 January 2013 в 04:49

2 ответа

В документации указано: Используйте опцию префикса вместе с глобальным параметром:

Конфигурация префикса по умолчанию соответствует местоположению, где установлен узел. В большинстве систем это / 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
29
ответ дан 15 August 2018 в 16:39

Начиная с версии 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.

17
ответ дан 15 August 2018 в 16:39
  • 1
    Это не работает, я всегда получаю Can't install <current directory>: Missing package name – Tibor Blenessy 24 January 2018 в 16:07
  • 2
    @TiborBlenessy Предполагая, что вы говорите о втором заявлении установки. Убедитесь, что у вас есть действующий файл package.json в вашем текущем каталоге. Если он все еще не работает, сообщите мне свою версию npm. Эти шаги используются для работы с указанной версией npm. И, если они больше не будут, я хотел бы глубоко погрузиться и добраться до первопричины, и, возможно, я придумаю альтернативу. – Rohit Sharma 30 January 2018 в 14:24
  • 3
    @RohitSharma Используя npm 6.0.0, этот метод не работает, поскольку он ожидает файл package.json в ./install/here – Christian Ivicevic 30 April 2018 в 13:16
  • 4
    @ChristianIvicevic Вы можете использовать npm install --prefix ./install/here ./ для установки package.json в текущем каталоге в ./ install / here & quot; каталог. Есть одна вещь, которую я заметил на Mac, что она создает символическую ссылку на родительскую папку внутри каталога node_modules. Но он все еще работает с npm 6.0.0 – Rohit Sharma 3 May 2018 в 11:04

Другие вопросы по тегам:

Похожие вопросы: