Глобальне місце встановлення npm на Windows?


86

Я не впевнений на 100%, але я вважаю, що я встановив node v5 з інсталятора Windows як на свій домашній, так і на офісний ПК.

На моєму домашньому ПК глобальні встановлення відбуваються під% APPDATA%:

(dev) go|c:\srv> which lessc
c:\users\bjorn\appdata\roaming\npm\lessc
c:\users\bjorn\appdata\roaming\npm\lessc.cmd

на моєму офісному ПК вони потрапляють під програмні файли:

(dev) go|w:\srv> which lessc
c:\program files\nodejs\lessc
c:\program files\nodejs\lessc.cmd

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

Чому глобальні встановлення потрапляють у різні папки, і як я можу примусити їх до місця, яке є спільним для всіх членів команди?


Через 3 роки у мене була подібна таємниця. Відповідь виявилася таким, що вузол створив стик у c: \ program files \ nodejs, який фактично вказував на% appdata% \ nvm \ v8.10.0. Тож це створило ілюзію, яка могла б відповідати побаченому.
Джон Хаттон,

1
Символьне посилання c: \ program files \ nodejs виявилося артефактом nvm
Джон Хаттон,

Відповіді:


66

Відповідно до: https://docs.npmjs.com/files/folders

  • Локальна інсталяція (за замовчуванням): додає матеріали до ./node_modules поточного кореня пакета.
  • Глобальна інсталяція (з -g): розміщує матеріали в / usr / local або там, де встановлений вузол.
  • Встановіть його локально, якщо вам потрібно ().
  • Встановіть його глобально, якщо ви збираєтеся запускати в командному рядку. -> Якщо вам потрібні обидва, то встановіть їх в обох місцях або скористайтеся посиланням npm.

префікс Конфігурація

Конфігурація префікса за замовчуванням визначає місце, де встановлено вузол. У більшості систем це так /usr/local. У вікнах це точне розташування двійкового файлу node.exe .

Документи можуть бути трохи застарілими, але вони пояснюють, чому глобальні встановлення можуть потрапити в різні каталоги:

(dev) go|c:\srv> npm config ls -l | grep prefix
; prefix = "C:\\Program Files\\nodejs" (overridden)
prefix = "C:\\Users\\bjorn\\AppData\\Roaming\\npm"

Виходячи з інших відповідей, може здатися, що перевизначення тепер є місцем розташування за замовчуванням у Windows, і що, можливо, я встановив свою офісну версію до того, як це перевизначення було впроваджено.

Це також пропонує рішення для того, щоб усі члени команди мали глобальні файли, що зберігаються в одному і тому ж абсолютному шляху відносно їх ПК, тобто (запускати як адміністратор):

mkdir %PROGRAMDATA%\npm
setx PATH "%PROGRAMDATA%\npm;%PATH%" /M
npm config set prefix %PROGRAMDATA%\npm

відкрийте нове вікно cmd.exe і переінсталюйте всі глобальні пакети.

Пояснення (від lineno.):

  1. Створіть папку в розумному місці для зберігання глобалів (Microsoft твердо твердить, що вам не слід писати в ProgramFiles, тому% PROGRAMDATA% здається наступним логічним місцем.
  2. Каталог повинен знаходитись на шляху, тому використовуйте setx .. /M для встановлення системного шляху (під HKEY_LOCAL_MACHINE). Це те, що вимагає запуску цього в оболонці з дозволами адміністратора.
  3. Скажи npmвикористовувати цей новий шлях. (Примітка: папка не відображається в% PATH% у цій оболонці, тому потрібно відкрити нове вікно).

Попередження: з якихось причин команда setx PATH "%PROGRAMDATA%\npm;%PATH%" /Mне додасть нове значення, а замінить все (у PowerShell).
Рубенс Маріуццо,

47

Це типові шляхи npm, якщо ви встановлюєте пакет глобально:

Windows XP -             %USERPROFILE%\Application Data\npm\node_modules
Newer Windows Versions - %AppData%\npm\node_modules
or -                     %AppData%\roaming\npm\node_modules

1
Хм .. %APPDATA%знаходиться в папці користувача, і PyCharm, здається, не приймає змінних середовища, тому я думаю, це тоді заборона.
thebjorn

7
це неправильно, виправте свою відповідь ~ / AppData / Roaming / npm / node_modules $ npm / c / Users / Phil / AppData / Roaming / npm / npm: рядок 12: вузол: команду не знайдено
Philip Rego

Після глобальної установки пакету через Powershell було створено загальний файл, cmd_auto_fileфайл та Windows PowerShell Scriptфайл"$env:APPDATA\npm"
Олов

18

Просто натисніть кнопку windows і введіть% APPDATA% і введіть enter.

Вище знаходиться місце, де ви можете знайти папку \ npm \ node_modules. Саме тут у вашій системі сидять глобальні модулі.


1
Якщо ви подивитесь на моє запитання, то виявите, що ваше твердження хибне. Глобальні модулі також можна встановити під %PROGRAMFILES%\nodejs, що є моїм першим запитанням (чому вони потрапляють у різні папки на моєму домашньому / офісному ПК?). Контекст мого запитання (як зазначено ..) полягає в тому, що мені потрібно надати шлях до цих глобально встановлених npm-інструментів до IDE PyCharm, щоб інші члени команди могли скористатися тим, що я правильно його налаштував для наших проектів. Оскільки (a) PyCharm не дозволяє env vars при вказівці виконуваного файлу, і (b) %APPDATA%=c:\Users\bjorn\..я не можу тут використовувати APPDATA.
thebjorn

-1

Якщо ви просто намагаєтесь з’ясувати, де npm встановлює ваш глобальний модуль (заголовок цього потоку), подивіться на вихідні дані під час запуску npm install -g sample_module

$ npm install -g sample_module C: \ Users \ user \ AppData \ Roaming \ npm \ sample_module -> C: \ Users \ user \ AppData \ Roaming \ npm \ node_modules \ sample_module \ bin \ sample_module.js + sample_module@5.1.0 оновлений 1 пакет за 2.821с


Питання - це ціле питання, а не лише його назва. Я не думаю, що це відповідь на моє запитання.
thebjorn

@thebjorn Я не думаю, що назва вашого запитання досить конкретна, і, отже, такі люди, як я, знайдуть його, хто шукає місце встановлення npm, не шукає, як його змінити, або чому існують різні папки тощо
java- addict301

Прийнята відповідь містить відповідь на ваше запитання: npm config ls -l | grep prefixі навіть якщо б цього не сталося, правильною процедурою було б поставити нове більш вузько зосереджене питання ...
thebjorn,

Безумовно, не простіше, оскільки вам потрібно щось встановити, а не просто щось шукати (що робить його непридатним, наприклад, для скриптів shell / bat).
thebjorn

Це якщо ви намагаєтеся з’ясувати, куди розміщуються ваші глобальні модулі під час встановлення (як це було в моєму випадку, і, мабуть, інші, хто знайде це питання на основі його поточної назви).
java-addict301
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.