Globales Standardinstallationsverzeichnis für node.js-Module in Windows ändern?


134

In meinem Windows - Installation PATHenthält C:\Program Files\nodejs, wo ausführbar node.exeist. Ich kann auch nodevon der Shell aus starten npm. Ich möchte, dass auch neue ausführbare Dateien installiert werden C:\Program Files\nodejs, aber es scheint unmöglich zu sein, dies zu erreichen.

Einstellungen NODE_PATHund NODE_MODULESVariablen ändern nichts: Die Dinge sind %appdata%\npmstandardmäßig noch installiert .

Wie kann ich den globalen Installationspfad ändern?


5
Wahrscheinlich, weil gremo alle knotenbezogenen Abhängigkeiten an einem Ort haben möchte. Das Problem ist, dass Sie beim Aktualisieren von nodejs alle installierten Pakete verlieren würden. Wenn Sie npm hingegen in den Ordner% appdata% des Benutzers einfügen, können andere Benutzer auf demselben Computer nicht darauf zugreifen. Stellen Sie sich vor, Sie installieren es als normaler Benutzer oder Administrator.
Volker E.


1
Das Verschieben von% AppData% an einen kontrollierten Ort ist für mich sehr sinnvoll, da es sich für mich ziemlich% temp% -isch anfühlt. (Dasselbe gilt für Firefox-Profile und einige andere). C:\Program FilesIst jedoch bereit für ständige Probleme mit dem Administratorrecht. ➪ Ich würde lieber umziehen D:\my-repository\npmoder so.
Frank Nocke

2
@WiredPrairie, weil die Installation in Benutzerordnern so ziemlich einfach nur dumm ist. Der springende Punkt bei der "globalen" Installation von Paketen ist, dass ein System als Ganzes auf diese Pakete zugreifen kann.
Michael Trouw

4
Hier ist ein Grund dafür: In meinem Netzwerk dürfen Sie keinen Code aus dem AppData-Ordner ausführen, da auf diese Weise häufig Malware, insbesondere CodeLocker, heruntergeladen und ausgeführt wird. Es ist eine zusätzliche Schutzschicht gegen Malware. Da Node dort Dinge installiert, kann ich keine Knotenmodule ausführen, ohne den Installationsort zu verschieben oder die Sicherheit auf meinem System zu verringern.
Steve Hiner

Antworten:


81

Alles, was Sie brauchen, ist die npm-foldersDokumentation zu lesen . Ich will jetzt nicht meinen Win Notebook beginnen , damit ich es nicht überprüfen können, aber Sie sollten sich nur ändern , prefixum c:\Program Files\nodejsDatei in der Config. Wenn Sie es global für alle Benutzer ändern möchten, bearbeiten Sie die c:\Program Files\nodejs\npmrcDatei, andernfalls erstellen / bearbeiten Sie sie c:\Users\{username}\.npmrc.

Aber diese Änderung wird wahrscheinlich einige Nebenwirkungen haben. Lesen Sie diese Diskussion daher vorher. Ich denke, deine Idee ist nicht gut.


33
Ich fand die npmrcDatei beiC:\path\to\nodejs\node_modules\npm\npmrc
Volker E.

3
Ändern Sie außerdem den Speicherort des npm-Cache in ein lokales Verzeichnis, npm config set cache <new cache location> --globalwenn Sie bei der Installation von Modulen auf Probleme stoßen und sich der Cache auf einem freigegebenen Laufwerk befindet. Ich habe diesen Fehler erhalten, ENOENT: no such file or directoryals sich der Cache in einem freigegebenen Laufwerk befand
redDevil

1
Vergessen Sie nicht, die System-PATH-Variable so zu aktualisieren, dass sie auf den neuen npm-Ordner verweist.
Hayko Koryun

64

Der Versuch, globale Pakete in zu installieren, C:\Program Files (x86)\nodejs\gab mir Probleme beim Ausführen als Administrator , da npm versuchte, in zu installieren
C:\Program Files (x86)\nodejs\node_modules\

Um dies zu beheben, ändern Sie das globale Installationsverzeichnis in C:\Users\{username}\AppData\Roaming\npm:

in C:\Users\{username}\, erstellen Sie .npmrcDatei mit dem Inhalt:

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

Referenz

Umgebungsknotenjs
x86-Installationsprogramm in C:\Program Files (x86)\nodejs\Windows 7 Ultimate N 64-Bit SP1
node --version: v0.10.28
npm --version: 1.4.10


Das ist seltsam, dass ich npm 2.1.6 verwendet habe und alle globalen Module in% appdata% / npm installiert habe. Nachdem ich es auf 2.6.1 aktualisiert habe, versucht es immer wieder (und schlägt fehl), es unter c: \ windows \ zu installieren Programmdateien \ .. Wissen Sie zufällig, wann sich dieses Verhalten geändert hat?
WORMSS


es scheint, dass es mit einer anderen Art zu tun hatte, wie ich npm installiert habe. Danke für den Unterschied.
WORMSS

2
npm config set Präfix C: \ Benutzer \ {Benutzername} \ AppData \ Roaming \ npm
Bernhard Döbler

62

Sie können meine Antwort darauf in meiner Antwort auf eine andere Frage sehen .


Unter Windows befindet sich der globale Installationspfad tatsächlich im Profilverzeichnis Ihres Benutzers

  • %USERPROFILE%\AppData\Roaming\npm
  • %USERPROFILE%\AppData\Roaming\npm-cache
  • WARNUNG: Wenn Sie als anderer Benutzer zeitgesteuerte Ereignisse oder andere Automatisierungen ausführen, stellen Sie sicher, dass Sie npm installals dieser Benutzer ausgeführt werden. Einige Module / Dienstprogramme sollten global installiert werden.
  • INSTALLER-BUGS: Möglicherweise müssen Sie diese Verzeichnisse erstellen oder das ...\npmVerzeichnis selbst zum Pfad Ihres Benutzers hinzufügen .

So ändern Sie den "globalen" Speicherort für alle Benutzer in einen geeigneteren freigegebenen globalen Speicherort %ALLUSERSPROFILE%\(npm|npm-cache)(tun Sie dies als Administrator):

  • Erstellen Sie ein [NODE_INSTALL_PATH]\etc\Verzeichnis
    • Dies ist erforderlich, bevor Sie npm config --global ...Aktionen ausprobieren
  • Erstellen Sie die globalen (Administrator-) Speicherorte für npm-Module
    • C:\ProgramData\npm-cache - npm Module werden hier gehen
    • C:\ProgramData\npm - Hier werden Binärskripte für global installierte Module abgelegt
    • C:\ProgramData\npm\node_modules - global installierte Module werden hier gehen
    • Stellen Sie die Berechtigungen entsprechend ein
      • Administratoren: ändern
      • authentifizierte Benutzer: lesen / ausführen
  • Festlegen globaler Konfigurationseinstellungen (Administrator-Eingabeaufforderung)
    • npm config --global set prefix "C:\ProgramData\npm"
    • npm config --global set cache "C:\ProgramData\npm-cache"
  • In C:\ProgramData\npmden Systemspezifika- Path - Umgebungsvariablen

Wenn Sie %LOCALAPPDATA%\(npm|npm-cache)stattdessen den "globalen" Speicherort Ihres Benutzers in " Pfad " ändern möchten :

  • Erstellen Sie die erforderlichen Verzeichnisse
    • C:\Users\YOURNAME\AppData\Local\npm-cache - npm Module werden hier gehen
    • C:\Users\YOURNAME\AppData\Local\npm - Binärskripte für installierte Module finden Sie hier
    • C:\Users\YOURNAME\AppData\Local\npm\node_modules - global installierte Module werden hier gehen
  • Konfigurieren Sie npm
    • npm config set prefix "C:\Users\YOURNAME\AppData\Local\npm"
    • npm config set cache "C:\Users\YOURNAME\AppData\Local\npm-cache"
  • Fügen Sie den neuen npm-Pfad zu Ihrer Umgebung hinzu PATH.
    • setx PATH "%PATH%;C:\Users\YOURNAME\AppData\Local\npm"

1
Das Festlegen des globalen Speicherorts auf C: \ ProgramData gemäß Ihrem mittleren Vorschlag scheint der beste Ort dafür in einer Windows-Umgebung zu sein, aber ich sehe nicht, wie Sie das Präfix in der globalen Konfigurationsdatei festlegen können, wenn das Präfix verwendet wird Suchen Sie die globale Konfigurationsdatei. Ich habe das gleiche Ergebnis erzielt, indem ich die integrierte Konfigurationsdatei C: \ Programme \ nodejs \ node_modules \ npm \ npmrc bearbeitet habe, aber ich vermute, dass diese Änderung irgendwann durch ein Update überschrieben wird.
Oenpelli

@oenpelli In diesem Fall ist "global" die .npmrcDatei Ihres Benutzers im Verzeichnis home / profile. Es müsste für alle Benutzer festgelegt werden.
Tracker1

Wie kann ich die globale Installation ändern, wenn ich unter Windows keine Administratorberechtigung habe?
Liam Xu

liam, du kannst dies für deinen Benutzer über eine .npmrcDatei in deinem Profilverzeichnis anpassen ... aber ymmv an diesem Punkt.
Tracker1

19

Aufbauend auf dem Installationskonzept von chocolateyund der von @Tracker vorgeschlagenen Idee funktionierte es für mich, Folgendes zu tun, und alle Benutzer unter Windows waren dann zufrieden mit nodejsund npm.

Wählen Sie C:\ProgramData\nodejsals Installationsverzeichnis für nodejsund installieren Sie nodejsmit jedem Benutzer, der Mitglied der Administratorgruppe ist.

Dies kann mit schokoladigem gemacht werden als: choco install nodejs.install -ia "'INSTALLDIR=C:\ProgramData\nodejs'"

Erstellen Sie dann einen Ordner, npm-cacheder im Stammverzeichnis des Installationsverzeichnisses aufgerufen wird C:\ProgramData\nodejs\npm-cache.

Erstellen Sie einen Ordner, etcder im Stammverzeichnis des Installationsverzeichnisses aufgerufen wird C:\ProgramData\nodejs\etc.

Legen Sie die NODEUmgebungsvariable als fest C:\ProgramData\nodejs.

Legen Sie die NODE_PATHUmgebungsvariable als fest C:\ProgramData\nodejs\node_modules.

Stellen Sie sicher %NODE%, dass die oben erstellte Umgebungsvariable (oder ihr Pfad) zur %PATH%Umgebungsvariablen hinzugefügt wurde .

Bearbeiten Sie %NODE_PATH%\npm\npmrcmit folgendem Inhaltprefix=C:\ProgramData\nodejs

Stellen Sie an der Eingabeaufforderung die globale Konfiguration wie folgt ein ...

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

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

Es ist wichtig, dass die obigen Schritte vorzugsweise nacheinander und vor dem Aktualisieren von npm ( npm -g install npm@latest) oder dem Versuch, ein npmModul zu installieren, ausgeführt werden.

Durch Ausführen der oben genannten Schritte konnten wir eine nodejssystemweite Installation ausführen, die allen Benutzern mit den entsprechenden Berechtigungen problemlos zur Verfügung steht. Jeder Benutzer kann dann nodeund npmnach Bedarf ausführen .


Was ist die Ausgabe von 'npm config list'. Laufen Sie auch unter Windows oder Linux?
Damilola

Versuchte es auf beiden. npm config add prefixfunktioniert, aber keine der hier genannten Umgebungsvariablen. Ich wollte keine weitere Frage aufschlagen, weil diese Frage sie abdeckt, aber die Antworten nicht (außerdem npm config).
Trysis

Die Umgebungsvariable NODE dient im Wesentlichen nur dazu, die Binärdateien verfügbar zu machen. Sie müssen weiterhin das Präfix und den Cache (falls nicht zuvor festgelegt) wie in der Prozedur beschrieben festlegen.
Damilola

Oh danke. Das war aus den Antworten oder irgendwo anders bei Google nicht sehr klar. Ich habe nach Umgebungsvariablen gesucht, da diese einfacher programmgesteuert geändert werden können, aber einzeilige Bash-Befehle sind vermutlich auch in Ordnung.
Trysis

Das hat bei mir wunderbar funktioniert. Vielen Dank für die ausführliche Anleitung!
ErnestoP

15

Mit diesem Befehl sollten Sie den globalen Installationsfluss von npm-Paketen festlegen

(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

Sie können auch den npm-cacheStandort direkt daneben berücksichtigen . (wie bei einer normalen NodeJS-Installation unter 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
Froh, dass ich Helfen kann. Es wäre auch eine gute Idee, ein Shel-Skript oder eine Batch-Datei zu erstellen, um dies für Sie auszuführen, wenn Sie Ihre Umgebung ändern. Zumindest ist es das, was ich tun würde
Davejoem

Hinzuzufügen "Auch wenn es Leerzeichen im Pfad zB. "C:\Program Files\blah".
taylorswiftfan

7
  • Schritt 1 :

    npm config erhält Präfix

    • Der Standardpfad lautet: %USERPROFILE%\AppData\Roaming\npm
  • Schritt 2 :

    npm config get cache

    • Der Standardpfad lautet: %USERPROFILE%\AppData\Roaming\npm-cache
  • Schritt 3 :

    npm config set prefix \ npm

    • Beispiel npm config set prefix C:\\dev\\node\\npm
  • Schritt 4 :

    npm config set cache \ npm-cache

    • Beispiel npm config set cache C:\\dev\\node\\npm-cache

Führen Sie die Schritte 1 und 2 erneut aus, um zu überprüfen, ob die Pfade nach Bedarf aktualisiert werden

Das ist es. Wenn Sie globale Pakete installieren, sollten diese in \ npm \ node_modules installiert sein


Vielen Dank, dass Ihre Lösung mein Problem gelöst hat. In den letzten 2 Wochen habe ich versucht, das Problem zu lösen. Tatsächlich enthielt mein Windows-Benutzerpfad Leerzeichen wie ABC XYZ WJS. Dann habe ich den Pfad in nur ein Wort geändert, nachdem meine npm-Installation angegeben wurde Ihre Lösung hilft mir also, den Cache zu leeren und den Cache auf meinen neuen Speicherort zu setzen.
Tahir Afridi

4

Der globale Standardordner ist C:\Users\{username}\AppData\Roaming\npm. Sie können eine .npmrcDatei erstellen (falls nicht vorhanden) C:\Users\{username}\und hinzufügen prefix = "path\\to\\yourglobalfolder". Beachten Sie, dass in Windows der Pfad durch getrennt werden sollte double back-slash.



1

Wenn Sie in Windows den Ordner "npm" oder "nodejs" auf Datenträger C an einen anderen Speicherort verschieben möchten, aber dennoch sicherstellen möchten, dass "node" und "npm" ordnungsgemäß funktionieren, können Sie einen Symlink wie folgt erstellen: Öffnen Sie die Eingabeaufforderung:

mklink /D "your_location_want_to_create_symlink" "location_of_node_npm_file"

Beispiel:

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

Nachdem Sie einen Symlink für den Ordner npm erstellt haben, verweist dieser Symlink auf D:\Nodejs Data\npmAlles funktioniert gut.


0

Ich habe die meisten Antworten hier ausprobiert. In meinem Fall scheint nichts zu funktionieren. Also habe ich den Temp-Speicherort in meinen env-Variablen in C: \ npm geändert. Dann fing es an zu arbeiten. Dies ist keine gute Idee, sondern eine vorübergehende Lösung.


0

Löschen Sie den Knotenordner vollständig aus dem Programmdateiordner. Deinstallieren Sie node.js und installieren Sie es erneut. Pfad der Umgebungsvariablen PATH ändern. Löschen Sie die .npmrc-Datei aus C: \ users \ yourusername


2
Haben Sie Unterlagen oder Quellen, die Ihre Aussage stützen? Wie im aktuellen Zustand geschrieben, ist es schwer zu sagen, ob Ihr Vorschlag tatsächlich funktioniert, ohne es selbst zu versuchen, was Zeit in Anspruch nimmt, die sonst gespart werden könnte.
Filnor

0

Es sind nicht viele Konfigurationen erforderlich. Gehen Sie einfach zu den erweiterten Systemeinstellungen. Kopieren Sie den Pfad, in dem Sie Ihren Knoten installiert haben. Erstellen Sie einfach eine Umgebungsvariable und überprüfen Sie dies mit dem Befehl node -v in Ihrer Eingabeaufforderung.


0

Um das globale Standardinstallationsverzeichnis für node.js (npm) -Module in Windows zu ändern, müssen Sie zwei Pfade festlegen.

Überprüfen Sie zunächst den aktuellen Pfad, in dem Knotenmodule installiert werden, wenn Sie versuchen, sie global zu installieren, indem Sie den folgenden Befehl verwenden:

npm list -g --depth = 0

Sie erhalten den aktuellen Pfad zurück, auf dem die Knotenmodule gerade installiert werden. Beispiel: D: \ vsc \ typescript

Besuchen Sie nun den folgenden Pfad, um die Ordner npm und npm-cache anzuzeigen. C: \ Benutzer \ Benutzername (ODER-Nummer) \ AppData \ Roaming

Im Roaming-Ordner Ihres C-Laufwerks finden Sie die Ordner npm und npm-cache. Klicken Sie auf den Ordner + npm + und wählen Sie den Pfad aus [Klicken Sie einfach auf den Balkenpfad, der automatisch ausgewählt wird, kopieren Sie ihn].Dies ist ein Pfadbild, das Sie auswählen müssen

Wenn Sie diesen Pfad kopiert haben, setzen Sie ihn auf die Umgebungsvariablen mit einem Variablennamen Pfad (alles, was Sie als Namen auswählen können). Jetzt haben Sie den Pfad für Ihren npm-Ordner festgelegt. Jetzt müssen Sie das Präfix festlegen. Gehen Sie in den Ordner npm und überprüfen Sie, ob der Ordner node_module vorhanden ist. Wenn nicht, erstellen Sie einen neuen Ordner mit dem Namen node_modules. Sie alle globalen Module werden in diesen Ordner aufgenommen, nachdem Sie alle Schritte ausgeführt haben.

Letzter Schritt: Gehen Sie zu CMD und geben Sie den folgenden Befehl ein:

npm Präfix festlegen C: \ Benutzer \ Benutzername (Nummer) \ AppData \ Roaming \ npm \ Knotenmodule

Dies ist wieder derselbe Pfad, den wir für die Umgebungsvariable ausgewählt haben. Wir fügen dem Pfad nur einen weiteren Ordner hinzu, und das ist node_module.

Alles eingestellt .... Jetzt ausprobieren ... Es wird funktionieren ..


0

Suchen Sie den aktuellen Pfad Ihrer globalen Knotenpaketinstallation, indem Sie den folgenden Befehl ausführen.

npm list -g --depth = 0

Ändern Sie diesen Pfad in den richtigen Pfad, indem Sie den folgenden Befehl ausführen.

npm Präfix festlegen C: \ Benutzer \ Benutzername (Nummer) \ AppData \ Roaming \ npm \ Knotenmodule

Es hat bei mir funktioniert. Lesen Sie meine vorherige Antwort zum besseren Verständnis.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.