Можно ли указать пользовательский пункт назначения пакета npm install
, либо с помощью флага команды или переменной среды?
По умолчанию локальная установка npm заканчивается в node_modules
текущем каталоге, но я хочу, чтобы он устанавливался в node_modules
другом каталоге, например vendor/node_modules
. Как я могу это сделать?
./node_modules
, я хочу, чтобы npm устанавливал их в подкаталоги./vendor/node_modules
. (Или нужно сказать, что это не настраивается.)require
d), но я не хочу устанавливать его глобально.Ответы:
TL; DR
Вы можете сделать это, используя
--prefix
флаг и--global
флаг *.* Несмотря на то, что это «глобальная» установка, установленные корзины не будут доступны через командную строку, если они не
~/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
parampath/to/npm/itself/npmrc
По умолчанию локально установленные пакеты входят в
./node_modules
. глобальные идут вprefix
переменную config (/usr/local
по умолчанию).Вы можете запустить,
npm config list
чтобы увидеть ваш текущий конфиг иnpm config edit
изменить его.PS
В целом,
npm
документация действительно полезна. Раздел папок - хороший структурный обзор npm, а раздел config отвечает на этот вопрос.источник
./vendor/node_modules/lib/bower
использованиеnpm#3.8.0
No version provided in package.json
bins won't be accessible through the command line
. Программа, конечно, может быть запущена с использованием полного путиnpm install eslint@3.4.0 -g --prefix c:\my_npm` calling
c: \ my_npm \ eslint --fix my.js`npm install
в каталоге A с файлом package.json, пакеты будут устанавливаться в каталог B. Похоже, это решение для установки отдельных пакетов.npm install
устанавливает зависимости локально.npm install X -g -prefix "..."
устанавливает модуль X в префикс,npm install -g -prefix "..."
устанавливает текущий пакет в префикс.Если вы хотите это в config, вы можете установить npm config следующим образом:
или
Проверьте ваш конфиг с
npm config ls -l
Или как говорит @pje и использовать
--prefix
флагисточник
npm install
все равно будет установлена локально,./node_modules
ноnpm install -g
будет установлена"$(pwd)/vendor/node_modules"
. Я могу представить себе настройки, а потом забыть об этом, а потом вернуться и спросить, почему мои глобальные пакеты работают странно.Для OSX вы можете перейти к вашему пользователю
$HOME
(вероятно / Users / ваше имя /) и, если он еще не существует, создать.npmrc
файл (файл, который npm использует для конфигурации пользователя), и создать каталог для ваших пакетов npm, чтобы быть установленным в (например, / Users / yourname / npm). В этом файле .npmrc установите «prefix» для нового каталога npm, в котором будут установлены «глобально» установленные пакеты npm; Эти «глобальные» пакеты, очевидно, будут доступны только вашей учетной записи.В .npmrc:
prefix=${HOME}/npm
Затем выполните эту команду из командной строки:
npm config ls -l
Он должен выводить как вашу собственную локальную конфигурацию, так и глобальную конфигурацию npm, и вы должны увидеть отраженную конфигурацию локального префикса, возможно, в верхней части длинного списка выходных данных.
В целях безопасности я рекомендую этот подход к настройке поведения npm вашей учетной записи, а не к настройке
/usr/local
папок, что я рекомендовал в других местах.источник
Например, в Windows 7 можно использовать следующий набор команд / операций.
Создайте личную переменную среды, двойные обратные слеши обязательны:
%NPM_HOME%
C:\\SomeFolder\\SubFolder\\
Теперь установите значения конфигурации для новых папок (примерные имена файлов):
npm config set prefix "%NPM_HOME%\\npm"
npm config set cache "%NPM_HOME%\\npm-cache"
npm config set tmp "%NPM_HOME%\\temp"
При желании вы можете удалить содержимое исходных папок до изменения конфигурации.
Удалить npm-кеш
npm cache clear
Список модулей npm
npm -g ls
Удалить модули npm
npm -g rm name_of_package1 name_of_package2
источник
После того, как я сам искал, что хочу, чтобы несколько проектов с общими зависимостями были DRYer, я обнаружил:
require()
require()
bin
иman
пути к$PATH
npm link
( info ) позволяет вам использовать локальную установку в качестве источника для глобалов→ придерживайтесь пути Node и устанавливайте локально
ссылка:
источник