Змінити глобальний каталог встановлення за замовчуванням модулів 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, були в одному місці. Проблема полягає в тому, що при оновленні вузлів ви втратите всі встановлені пакети. З іншого боку, введення npm у папку% appdata% користувача робить його недоступним для іншого користувача на тій же машині. Подумайте про встановлення його як звичайного користувача проти адміністратора.
Волкер Е.


1
Переїзд% AppData% до більш контрольованого місця має для мене багато сенсу, оскільки він відчуває себе доволі% temp% -ish. (Так само для профілів 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
Волкер Е.

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\мені дала запустити як адміністратор , тому що npm намагався встановити
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-розрядна
node --versionверсія SP1 : v0.10.28
npm --version: 1.4.10


Це дивно, що я використовував npm 2.1.6, і він встановлював усі глобальні модулі у% appdata% / npm, тепер, коли я оновив його до 2.6.1, він продовжує намагатися (і не вдається) встановити c: \ windows \ програмні файли \ .. Чи знаєте ви, коли ця поведінка змінилася?
СВЯТЛЕННЯ


здається, це було пов'язано з іншим способом, який я встановив npm. Дякую за відмінності, хоча.
РОБОТИ

2
Префікс npm config set C: \ Users \ {ім'я користувача} \ AppData \ Roaming \ npm
Bernhard Döbler

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"
  • Додайте новий шлях в хвилину до середовища PATH.
    • setx PATH "%PATH%;C:\Users\YOURNAME\AppData\Local\npm"

1
Встановлення глобального розташування на C: \ ProgramData відповідно до вашої середньої пропозиції є найкращим місцем для цього в середовищі Windows, але я не бачу, як ви можете встановити префікс у глобальному конфігураційному файлі, коли використовується префікс для знайти глобальний конфігураційний файл. Я досяг такого ж результату, відредагувавши вбудований файл конфігурації C: \ Program Files \ nodejs \ node_modules \ npm \ npmrc, але я підозрюю, що ця зміна може бути замінена оновленням на якомусь етапі.
oenpelli

@oenpelli У цьому випадку "глобальний" - це .npmrcфайл вашого користувача в домашньому / профільному каталозі. Це потрібно було б встановити для всіх користувачів.
Tracker1

Якщо у мене немає дозволу адміністратора на Windows, як я можу змінити глобальну установку?
liam xu

liam, ви можете налаштувати це для свого користувача через .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 config list'. Також ви працюєте в Windows або Linux?
Дамілола

Спробував це на обох. npm config add prefixпрацює, але жодна зі змінних середовища, згаданих тут. Я не хотів відкривати інше запитання, оскільки це питання охоплює його, але відповіді (крім того npm config).
трис

Змінна середовища NODE по суті є просто викриттям двійкових файлів. Ще потрібно встановити префікс і кеш (якщо вони раніше не встановлені), як зазначено в процедурі.
Дамілола

О, дякую. Це було не дуже зрозуміло з відповідей чи деінде в Google. Я шукав змінні середовища, оскільки їх легше змінити програмно, але однорядкові команди Bash також добре, я думаю.
trysis

Це прекрасно працювало для мене. Дякую за детальну інструкцію!
ErnestoP

15

Ви повинні використовувати цю команду для встановлення глобальної флокації встановлення пакетів npm

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

(cmd / git-cmd) npm config --global set prefix <drive:\path\you\want\to\use>\npm

Ви також можете розглянути npm-cacheмісцеположення поруч. (як це було б у звичайній установці вузлів у Windows)

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

(cmd / git-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 config отримати кеш

    • Шлях за замовчуванням: %USERPROFILE%\AppData\Roaming\npm-cache
  • Крок 3 :

    префікс встановлення npm \ npm

    • приклад npm config set prefix C:\\dev\\node\\npm
  • Крок 4 :

    npm config set кеш \ npm-кеш

    • приклад npm config set cache C:\\dev\\node\\npm-cache

Виконайте кроки 1 і 2 ще раз, щоб перевірити, чи оновлюються шляхи, як потрібно

Це воно. Щоразу, коли ви встановлюєте глобальні пакети, ви бачите їх встановленими всередині \ npm \ node_modules


Дякую, що ваше рішення вирішило мою проблему, з останніх 2 тижнів я намагався вирішити проблему. Насправді у мого шляху користувача до Windows були пробіли, як ABC XYZ WJS, тож я змінив шлях на лише одне слово, після цього мій npm install давав помилок, тому ваше рішення допоможе мені очистити кеш і встановити кеш на моє нове місце.
Тахір Афріді

4

Глобальна папка за замовчуванням - C:\Users\{username}\AppData\Roaming\npm. Ви можете створити (якщо його не існує) .npmrcфайл у C:\Users\{username}\та додати prefix = "path\\to\\yourglobalfolder". Зауважте, що у вікнах шлях повинен бути розділений на 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 \ typecript

Тепер відвідайте наступний шлях, щоб побачити папку npm та npm-кеш. C: \ Користувачі \ ім'я користувача (АБО Число) \ AppData \ Роумінг

У папці Roaming вашого диска C ви знайдете папки npm та npm-кеш. Клацніть папку + npm + і виберіть шлях [Просто натисніть на смужку шляху буде вибрано автоматично, скопіюйте її].Це зображення шляху, яке потрібно вибрати

Коли ви скопіюєте цей шлях, встановіть це змінні середовища, зі змінною назвою Шлях (все, що ви можете вибрати як ім'я). Тепер ви встановили шлях до своєї папки npm, тепер саме час встановити префікс. Зайдіть у папку npm і перевірте, чи існує папка node_module, якщо не створити нову папку, названу як node_modules. Ви всі глобальні модулі увійдете в цю папку після виконання всіх етапів.

Заключний крок: Перейдіть до CMD та праворуч наступну команду:

npm встановити префікс C: \ Користувачі \ ім'я користувача (Кількість) \ AppData \ Роумінг \ npm \ node_модулі

Знову ж таки це той самий шлях, який ми обрали для змінної середовища, ми просто додаємо ще одну папку в шлях і це node_module.

Все встановлено .... Спробуйте зараз ... Це спрацює ..


0

Знайдіть поточний шлях встановлення вашого глобального пакета вузлів, дотримуючись команди.

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

Змініть цей шлях на правильний шлях, дотримуючись команди.

npm встановити префікс C: \ Користувачі \ ім'я користувача (Кількість) \ AppData \ Роумінг \ npm \ node_модулі

Це працювало для мене. Прочитайте мою попередню відповідь для кращого розуміння.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.