Как установить пользовательское расположение для локальной установки пакета npm?
Можно ли указать целевое назначение пакета для npm install
, либо через флаг команды, либо переменную среды?
По умолчанию локальная установка npm заканчивается в node_modules
в текущем каталоге, но я хочу, чтобы она была установлена в node_modules
в другом каталоге, например vendor/node_modules
. Как я могу это сделать?
Ответы
Ответ 1
TL; DR
Вы можете сделать это, используя флаг --prefix
и флаг --global
*.
[email protected]:~/foo $ npm install bower -g --prefix ./vendor/node_modules
[email protected] /Users/pje/foo/vendor/node_modules/bower
* Несмотря на то, что это "глобальная" установка, установленные бины не будут доступны через командную строку, если только ~/foo/vendor/node_modules
не существует в PATH
.
TL, R
Каждый настраиваемый атрибут npm
может быть установлен в любом из шести разных мест. В порядке приоритета:
- Флаги командной строки:
--prefix ./vendor/node_modules
- Переменные среды:
NPM_CONFIG_PREFIX=./vendor/node_modules
- Файл конфигурации пользователя:
$HOME/.npmrc
или userconfig
param
- Глобальный файл конфигурации:
$PREFIX/etc/npmrc
или userconfig
param
- Встроенный файл конфигурации:
path/to/npm/itself/npmrc
- Конфигурация по умолчанию: node_modules/npmconf/config-defs.js
По умолчанию локально установленные пакеты входят в ./node_modules
. глобальные входят в конфигурационную переменную prefix
(/usr/local
по умолчанию).
Вы можете запустить npm config list
, чтобы увидеть свою текущую конфигурацию и npm config edit
, чтобы изменить ее.
PS
В общем, документация npm
действительно полезна. Раздел folders является хорошим структурным обзором npm, а раздел config отвечает на этот вопрос.
Ответ 2
Если вы хотите это в config, вы можете установить конфигурацию npm следующим образом:
npm config set prefix "$(pwd)/vendor/node_modules"
или
npm config set prefix "$HOME/vendor/node_modules"
Проверьте конфигурацию с помощью
npm config ls -l
Или как @pje говорит и использует флаг --prefix
Ответ 3
Для OSX вы можете перейти к своему пользователю $HOME
(вероятно,/Users/yourname/), а если он еще не существует, создайте файл .npmrc
(файл, который npm использует для настройки пользователя) и создайте каталог для ваших пакетов npm, которые будут установлены (например,/Users/yourname/npm). В этом файле .npmrc установите "префикс" в ваш новый каталог npm, в котором будет установлено "глобально", пакеты npm будут установлены; эти "глобальные" пакеты, очевидно, будут доступны только для вашей учетной записи пользователя.
В .npmrc:
prefix=${HOME}/npm
Затем запустите эту команду из командной строки:
npm config ls -l
Он должен давать вывод как в вашей локальной конфигурации, так и в глобальной конфигурации npm, и вы должны увидеть, что ваша локальная конфигурация префикса отражена, вероятно, около верхней части длинного списка вывода.
Для обеспечения безопасности я рекомендую этот подход для настройки поведения npm вашей учетной записи пользователя в соответствии с вашими папками /usr/local
, которые я видел в другом месте.
Ответ 4
В Windows 7, например, можно использовать следующий набор команд/операций.
Создайте переменную личной среды, двойные обратные слэши обязательны:
- Имя переменной:
%NPM_HOME%
- Значение переменной:
C:\\SomeFolder\\SubFolder\\
Теперь установите значения конфигурации в новые папки (примеры имен файлов):
npm config set prefix "%NPM_HOME%\\npm"
- Установите папку npm-cache
npm config set cache "%NPM_HOME%\\npm-cache"
- Установите временную папку npm
npm config set tmp "%NPM_HOME%\\temp"
При желании вы можете очистить содержимое исходных папок до, если конфигурация изменена.
-
Удалить npm-cache npm cache clear
-
Список модулей npm npm -g ls
-
Удалить модули npm
npm -g rm name_of_package1 name_of_package2
Ответ 5
После поиска этого я хочу, чтобы несколько проектов с общими зависимостями были DRYer, Ive нашел:
- Установка локально - это путь Node для всего, что вы хотите использовать через
require()
- Установка в глобальном масштабе предназначена для двоичных файлов, которые вы хотите в своем пути, но не предназначена для чего-либо через
require()
- Использование префикса означает, что вам нужно добавить соответствующие пути
bin
и man
к $PATH
-
npm link
(информация) позволяет использовать локальную установку в качестве источника для глобальных переменных
→ придерживаться способа Node и установить локально
ссылка
Ответ 6
Я бы просто установил локально, а затем в вашем пакете. json, переместите его из раздела зависимостей в devDependencies. В зависимости от того, что вы используете для развертывания, оно не может быть развернуто (например, не для героку).
devDependencies": {
"module": "0.1.0"
}