Изменить глобальный каталог установки по умолчанию для модулей node.js в Windows?

134

В моем Windows установка PATHвключает в себя C:\Program Files\nodejs, где исполняемый файл node.exe. Я могу запустить nodeиз оболочки, а также npm. Я бы хотел, чтобы новые исполняемые файлы также были установлены C:\Program Files\nodejs, но это невозможно сделать.

Установка NODE_PATHи NODE_MODULESпеременные ничего не меняют: все еще установлено в%appdata%\npm по умолчанию.

Как я могу изменить глобальный путь установки?

Gremo
источник
5
Возможно, потому что gremo хочет иметь все связанные с nodejs зависимости в одном месте. Проблема в том, что при обновлении nodejs вы потеряете все установленные пакеты. С другой стороны, размещение npm в папке% appdata% пользователя делает его недоступным для другого пользователя на той же машине. Думайте об установке его как обычный пользователь против администратора.
Фолькер Э.
Относящиеся к stackoverflow.com/questions/6685892/...
Volker E.
1
Перемещение% AppData% в более контролируемое место имеет для меня большой смысл, так как оно кажется мне довольно временным. (То же самое можно сделать с профилями Firefox и некоторыми другими). Однако C:\Program Filesготов для постоянных прав админ прав. ➪ Я предпочел бы переместить сделать D:\my-repository\npmили что
Фрэнк Нок
2
@WiredPrairie, потому что установка в пользовательские папки просто глупа. Весь смысл «глобальной» установки пакетов заключается в том, что система в целом может получить доступ к этим пакетам.
Майкл Троу
4
Вот причина для этого: в моей сети вам не разрешено выполнять код из папки AppData, потому что именно так часто загружаются и запускаются вредоносные программы, особенно CodeLocker. Это дополнительный уровень защиты от вредоносных программ. Так как Node устанавливает вещи там, я не могу запускать модули узлов без перемещения места установки или снижения безопасности в моей системе.
Стив Хайнер,

Ответы:

81

Все, что вам нужно, это прочитать npm-foldersдокументацию . Я не хочу , чтобы начать свой Win ноутбук теперь так я не могу проверить это, но вы должны изменить только prefixв c:\Program Files\nodejsв файле конфигурации. Если вы хотите изменить его глобально для всех пользователей, отредактируйте c:\Program Files\nodejs\npmrcфайл, в противном случае создайте / отредактируйте c:\Users\{username}\.npmrc.

Но это изменение, вероятно, будет иметь некоторые побочные эффекты, поэтому прочитайте это обсуждение раньше. Я думаю, что ваша идея не очень хорошая.

ivoszz
источник
33
Я нашел npmrcфайл вC:\path\to\nodejs\node_modules\npm\npmrc
Volker E.
3
также измените расположение кэша npm на локальный каталог, используя, npm config set cache <new cache location> --globalесли у вас возникнут проблемы при установке модулей, и кеш находится на общем диске. Я получил эту ошибку, ENOENT: no such file or directoryкогда кеш был в общем диске
redDevil
1
Не забудьте обновить системную переменную PATH, чтобы она указывала на новую папку npm.
Айко Корюн
64

пытаясь установить глобальные пакеты в C:\Program Files (x86)\nodejs\дала мне Запуск от имени администратора вопросов, потому что НПМ пытается установить в
C:\Program Files (x86)\nodejs\node_modules\

Чтобы решить эту проблему, измените каталог глобальной установки на C:\Users\{username}\AppData\Roaming\npm:

в C:\Users\{username}\, создать .npmrcфайл с содержанием:

prefix = "C:\\Users\\{username}\\AppData\\Roaming\\npm"

ссылка


установщик среды nodejs x86 вC:\Program Files (x86)\nodejs\ Windows 7 Ultimate N 64-bit SP1
node --version: v0.10.28
npm --version: 1.4.10

Джейк Бергер
источник
Это странно, я использовал npm 2.1.6, и он устанавливал все глобальные модули в% appdata% / npm, теперь, когда я обновил его до 2.6.1, он пытается (и не может) установить в c: \ windows \ программные файлы \ .. Знаете ли вы, когда это поведение изменилось?
WORMSS
1
вот некоторые ноды вики-различий
Джейк Бергер
кажется, это было связано с тем, как я установил npm. Спасибо за разницу, хотя.
WORMSS
2
Префикс конфигурации npm: C: \ Users \ {имя пользователя} \ AppData \ Roaming \ npm
Бернхард Доблер,
62

Вы можете увидеть мой ответ на это в моем ответе на другой вопрос .


В Windows глобальный путь установки находится в каталоге профиля вашего пользователя.

  • %USERPROFILE%\AppData\Roaming\npm
  • %USERPROFILE%\AppData\Roaming\npm-cache
  • ВНИМАНИЕ: Если вы выполняете синхронизированные события или другую автоматизацию от имени другого пользователя, убедитесь, что вы работаете npm installот имени этого пользователя. Некоторые модули / утилиты должны быть установлены глобально.
  • ОШИБКИ УСТАНОВЩИКА: Возможно, вам придется создать эти каталоги или добавить ...\npmкаталог к ​​своему пути пользователей самостоятельно.

Чтобы изменить «глобальное» местоположение для всех пользователей на более подходящее общее глобальное расположение %ALLUSERSPROFILE%\(npm|npm-cache)(сделайте это как администратор):

  • создать [NODE_INSTALL_PATH]\etc\каталог
    • это необходимо, прежде чем пытаться npm config --global ...действия
  • создать глобальное (административное) местоположение (я) для модулей npm
    • C:\ProgramData\npm-cache - модули npm пойдут сюда
    • C:\ProgramData\npm - бинарные скрипты для глобально установленных модулей будут идти здесь
    • C:\ProgramData\npm\node_modules - глобально установленные модули пойдут сюда
    • установить разрешения соответствующим образом
      • администраторы: изменить
      • аутентифицированные пользователи: чтение / выполнение
  • Установить глобальные параметры конфигурации (командная строка администратора)
    • npm config --global set prefix "C:\ProgramData\npm"
    • npm config --global set cache "C:\ProgramData\npm-cache"
  • Добавьте C:\ProgramData\npmв переменную среды вашей системы путь

Если вы хотите изменить %LOCALAPPDATA%\(npm|npm-cache)вместо этого «глобальное» местоположение вашего пользователя на путь:

  • Создайте необходимые каталоги
    • C:\Users\YOURNAME\AppData\Local\npm-cache - модули npm пойдут сюда
    • C:\Users\YOURNAME\AppData\Local\npm - бинарные скрипты для установленных модулей пойдут сюда
    • C:\Users\YOURNAME\AppData\Local\npm\node_modules - глобально установленные модули пойдут сюда
  • Настроить npm
    • npm config set prefix "C:\Users\YOURNAME\AppData\Local\npm"
    • npm config set cache "C:\Users\YOURNAME\AppData\Local\npm-cache"
  • Добавьте новый путь npm к вашей среде PATH.
    • setx PATH "%PATH%;C:\Users\YOURNAME\AppData\Local\npm"
Tracker1
источник
1
Установка глобального местоположения в C: \ ProgramData согласно вашему среднему предложению, кажется, лучшее место для этого в среде Windows, но я не вижу, как вы можете установить префикс в глобальном конфигурационном файле, когда префикс используется для найти глобальный конфигурационный файл. Я достиг того же результата, отредактировав встроенный конфигурационный файл C: \ Program Files \ nodejs \ node_modules \ npm \ npmrc, но я подозреваю, что это изменение может быть перезаписано обновлением на каком-то этапе.
oenpelli
@oenpelli В этом случае «global» - это .npmrcфайл вашего пользователя в каталоге home / profile. Это должно быть установлено для всех пользователей.
Tracker1
Если у меня нет прав администратора на Windows, как я могу изменить глобальную установку?
Лиам Сю
Лиам, вы можете настроить это для своего пользователя через .npmrcфайл в каталоге вашего профиля ... хотя, ymmv на этом этапе.
Tracker1
19

Основываясь на концепции установки chocolateyи идее, предложенной @Tracker, для меня работало следующее: все пользователи Windows были тогда довольны работой с nodejsи npm.

Выберите в C:\ProgramData\nodejsкачестве каталога установки для nodejsи установите nodejsс любым пользователем, который является членом группы администраторов.

Это может быть сделано с шоколадом как: choco install nodejs.install -ia "'INSTALLDIR=C:\ProgramData\nodejs'"

Затем создайте папку с именем npm-cacheв корне установочного каталога, что после следующего выше будет C:\ProgramData\nodejs\npm-cache.

Создайте папку с именем etcв корне установочной директории, которая после следующих действий будет C:\ProgramData\nodejs\etc.

Установите NODEпеременную среды как C:\ProgramData\nodejs.

Установите NODE_PATHпеременную среды как C:\ProgramData\nodejs\node_modules.

Убедитесь, что %NODE%переменная среды, созданная ранее, добавлена ​​(или ее путь) добавлена ​​в %PATH%переменную среды.

Изменить %NODE_PATH%\npm\npmrcсо следующим содержаниемprefix=C:\ProgramData\nodejs

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

npm config --global set prefix "C:\ProgramData\nodejs"

npm config --global set cache "C:\ProgramData\nodejs\npm-cache"

Важно, чтобы описанные выше шаги выполнялись предпочтительно последовательно и перед обновлением npm ( npm -g install npm@latest) или попыткой установить какой-либо npmмодуль.

Выполнение описанных выше шагов помогло нам выполнить nodejsобщесистемную установку, легко доступную для всех пользователей с соответствующими разрешениями. Каждый пользователь может запустить nodeи по npmмере необходимости.

Damilola
источник
что выводит «список конфигурации npm». Кроме того, вы работаете в Windows или Linux?
Дамилола
Пробовал на обоих. npm config add prefixработает, но ни одна из переменных среды, упомянутых здесь. Я не хотел открывать другой вопрос, потому что этот вопрос охватывает его, но ответы не (кроме npm config).
trysis
Переменная окружения NODE, по сути, предназначена для демонстрации двоичных файлов. Вам все еще нужно установить префикс и кеш (если он не был предварительно установлен), как указано в процедуре.
Дамилола
О, спасибо. Это было не очень ясно из ответов или где-либо еще в Google. Я искал переменные окружения, так как их легче изменить программно, но однострочные команды Bash тоже хороши, я полагаю.
trysis
Это прекрасно сработало для меня. Спасибо за подробные инструкции!
ErnestoP
15

Вы должны использовать эту команду, чтобы установить глобальную флотацию установки пакетов npm

(Git Bash) npm config --global set prefix </path/you/want/to/use>/npm

(CMD / ГИТ-CMD) npm config --global set prefix <drive:\path\you\want\to\use>\npm

Вы также можете рассмотреть npm-cacheрасположение рядом с ним. (как было бы в обычной установке nodejs на Windows)

(Git Bash) npm config --global set cache </path/you/want/to/use>/npm-cache

(CMD / ГИТ-CMD) npm config --global set cache <drive:\path\you\want\to\use>\npm-cache

davejoem
источник
1
Рад помочь. Также было бы неплохо создать скрипт шелла или командный файл, чтобы выполнить это для вас каждый раз, когда вы меняете свою среду. По крайней мере, это то, что я делаю
davejoem
Также стоит добавить «если есть пробелы на пути. Например "C:\Program Files\blah".
taylorswiftfan
7
  • Шаг 1 :

    npm config получает префикс

    • Путь по умолчанию: %USERPROFILE%\AppData\Roaming\npm
  • Шаг 2 :

    Конфигурация npm получить кеш

    • Путь по умолчанию: %USERPROFILE%\AppData\Roaming\npm-cache
  • Шаг 3 :

    Конфигурационный префикс npm \ npm

    • пример npm config set prefix C:\\dev\\node\\npm
  • Шаг 4 :

    npm config set cache \ npm-cache

    • пример npm config set cache C:\\dev\\node\\npm-cache

Снова выполните шаги 1 и 2, чтобы проверить, обновляются ли пути по мере необходимости.

Вот и все. Всякий раз, когда вы устанавливаете глобальные пакеты, вы должны видеть, что они установлены внутри \ npm \ node_modules

Kandeepa
источник
Благодаря тому, что ваше решение решило мою проблему, за последние 2 недели я пытался ее решить. На самом деле в моем пути пользователя Windows были пробелы, такие как ABC XYZ WJS, поэтому я изменил путь только на одно слово, после чего моя установка npm давала ошибки, поэтому ваше решение поможет мне очистить кеш и установить кеш в моем новом месте.
Тахир Африди
4

Глобальная папка по умолчанию - C:\Users\{username}\AppData\Roaming\npm. Вы можете создать (если он не существует) .npmrcфайл C:\Users\{username}\и добавить prefix = "path\\to\\yourglobalfolder". Обратите внимание, что в Windows путь должен быть отделен от double back-slash.

angeldsWang
источник
3

Использование символической ссылки Windows из C: \ Users {имя пользователя} \ AppData \ Roaming \ npm и C: \ Users {имя пользователя} \ AppData \ Roaming \ npm-cache- path к месту назначения отлично работает для меня.

Как добавить символическую ссылку

введите описание изображения здесь

dynamiclynk
источник
1

В Windows, если вы хотите переместить папку npm или nodejs на диске C в другое место, но при этом все равно убедитесь, что узел и npm работают хорошо, вы можете создать символическую ссылку следующим образом: Откройте командную строку:

mklink /D "your_location_want_to_create_symlink" "location_of_node_npm_file"

Пример:

mklink /D "C:\Users\MyUser\AppData\Roaming\npm" "D:\Nodejs Data\npm"

Теперь, когда вы создали символическую ссылку для папки npm, эта символическая ссылка будет ссылаться на D:\Nodejs Data\npmВсе будет работать хорошо.

Вин Триу
источник
0

Я попробовал большинство ответов здесь, кажется, ничего не работает в моем случае. Поэтому я изменил местоположение Temp в моих переменных env на C: \ npm. Тогда это начало работать. Это не хорошая идея, а временное решение.

Манодж
источник
0

Удалить папку узла полностью из папки программного файла. Удалите node.js, а затем переустановите его. изменить путь переменной среды PATH. удалить файл .npmrc из C: \ users \ yourusername

Сантош Кадам
источник
2
Есть ли у вас какие-либо документы или источники, которые поддерживают ваше заявление? Как написано в его текущем состоянии, трудно сказать, действительно ли ваше предложение работает, не пытаясь сделать это самостоятельно, что требует времени, которое можно было бы сохранить в противном случае.
Филнор
0

он не требует особых настроек, просто перейдите в дополнительные системные настройки, скопируйте путь, по которому вы установили свой узел, и просто создайте переменную окружения и проверьте с помощью команды node -v в вашем приглашении!

Анимеш Саксена
источник
0

Чтобы изменить глобальный каталог установки по умолчанию для модулей node.js (npm) в Windows, необходимо исправить 2 пути.

Сначала проверьте текущий путь, где устанавливаются модули узлов, когда вы пытаетесь установить их глобально, используя следующую команду:

список npm -g --depth = 0

Он вернет вам текущий путь, где устанавливаются модули узлов прямо сейчас. Пример: D: \ vsc \ typescript

Теперь перейдите по следующему пути, чтобы увидеть папки npm и npm-cache. C: \ Users \ имя пользователя (ИЛИ номер) \ AppData \ Roaming

В папке Roaming вашего диска C вы найдете папки npm и npm-cache. Нажмите на папку + npm + и выберите путь [Просто нажмите на путь панели будет выбран автоматически, скопируйте его].Это изображение пути, которое вам нужно выбрать

После того, как вы скопируете этот путь, установите его для переменных среды с именем переменной Path (все, что вы можете выбрать в качестве имени). Теперь вы установили путь к вашей папке npm, теперь пришло время установить префикс. Зайдите в папку npm и проверьте, существует ли папка node_module, если нет, создайте новую папку с именем node_modules. Вы все глобальные модули попадете в эту папку после выполнения всех шагов.

Последний шаг: перейдите к CMD и введите следующую команду:

npm установленный префикс C: \ Users \ имя пользователя (число) \ AppData \ Roaming \ npm \ node_modules

Опять же, это тот же путь, который мы выбрали для переменной среды, мы просто добавляем еще одну папку в путь, и это node_module.

Все установлено .... Попробуйте сейчас ... Это будет работать ..

TechTutsIndia
источник
0

Найдите текущий путь установки пакета глобального узла, выполнив следующую команду.

список npm -g --depth = 0

Измените этот путь на правильный путь с помощью следующей команды.

npm установленный префикс C: \ Users \ имя пользователя (число) \ AppData \ Roaming \ npm \ node_modules

Это сработало для меня. Прочитайте мой предыдущий ответ для лучшего понимания.

TechTutsIndia
источник