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


134

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

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

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


5
Возможно, потому что gremo хочет иметь все связанные с nodejs зависимости в одном месте. Проблема в том, что при обновлении nodejs вы потеряете все установленные пакеты. С другой стороны, размещение npm в папке% appdata% пользователя делает его недоступным для другого пользователя на той же машине. Думайте об установке его как обычный пользователь против администратора.
— Фолькер Э.


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.

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


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


кажется, это было связано с тем, как я установил 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"

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мере необходимости.


что выводит «список конфигурации 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


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


Благодаря тому, что ваше решение решило мою проблему, за последние 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.



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.

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


0

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

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.