Wo installiert npm Pakete?

977

Kann mir jemand sagen, wo ich die Node.js-Module finde, mit denen ich installiert habe npm?

trnc
quelle
3
auf Linux Mint ist es$HOME/.npm-global/lib/node_modules
Synxmax
9
Nur so weiß jeder, ohne die Installation -gOption wird ein Modul Sie Arbeitsverzeichnis zB installieren , wenn Sie ein Verzeichnis machen sagen ~/Desktop/tmpdann cd ~/Desktop/tmptun dann npm install appiumdann tun , lswerden Sie sehen , node_modules package-lock.jsonweil Sie ein Knotenmodul installiert haben , appiumum Ihre working directory... super , weil verwirrend -gsollte im Wesentlichen sein das ist defaultaber nicht.
the_prole
2
@the_prole - danke, das war unglaublich nützlich .
Fattie

Antworten:

1142

Globale Bibliotheken

Sie können ausführen, um npm list -gzu sehen, welche globalen Bibliotheken installiert sind und wo sie sich befinden. Verwenden Sie diese Option npm list -g | head -1für abgeschnittene Ausgaben, die nur den Pfad anzeigen. Wenn Sie nur Hauptpakete anzeigen möchten, nicht deren Unterpakete, die zusammen mit diesen installiert werden - Sie können diese verwenden -, npm list --depth=0die alle Pakete anzeigen und nur global installierte Pakete erhalten möchten , fügen Sie einfach -g hinzu npm list -g --depth=0.

Auf Unix-Systemen werden sie normalerweise in /usr/local/lib/nodeoder /usr/local/lib/node_modulesbei globaler Installation platziert. Wenn Sie die NODE_PATHUmgebungsvariable auf diesen Pfad setzen, können die Module nach Knoten gefunden werden.

Windows XP - %USERPROFILE%\AppData\npm\node_modules
Windows 7, 8 und 10 -%USERPROFILE%\AppData\Roaming\npm\node_modules

Nicht globale Bibliotheken

Nicht globale Bibliotheken werden im node_modulesUnterordner in dem Ordner installiert, in dem Sie sich gerade befinden.

Sie können ausführen npm list, um die installierten nicht globalen Bibliotheken für Ihren aktuellen Standort anzuzeigen.

Verwenden Sie bei der Installation die Option -g, um global zu installieren

npm install -g pm2- pm2 wird global installiert. Es befindet sich dann normalerweise in /usr/local/lib/node_modules(Verwenden Sie diese Option, um npm root -gzu überprüfen, wo.)

npm install pm2- pm2 wird lokal installiert. Es befindet sich dann normalerweise im lokalen Verzeichnis in/node_modules

Decko
quelle
26
Wenn Sie nvm verwenden, befinden sich Ihre globalen Module möglicherweise an einer von mehreren Stellen, abhängig von der Version des Knotens, den Sie gerade verwenden. Der beste Weg ist, npm list -gwie in einer anderen Antwort vorgeschlagen zu verwenden .
unbeschreiblich
73
funktioniert bei mir nicht, zeigt nur bin ordner an. "npm root -g" funktioniert.
Whitneyland
7
Unter Arch Linux befinden sich die globalen Module unter / usr / lib. "npm --help" zeigt die genaue Position als letzte Zeile der Ausgabe an, z. B.: [email protected] / usr / lib / node_modules / npm
Gregor
20
für Windows 10, platziert in%USERPROFILE%\AppData\Roaming\npm\node_modules
Nirmal Goswami
11
"npm root -g" ist korrekt - die Liste funktioniert möglicherweise, enthält jedoch viel zu viele Informationen, wobei der andere Befehl nur den genauen Ort angibt, nach dem Sie suchen. stackoverflow.com/a/24295332/174965
Adam Tolley
581

Der Befehl npm rootinformiert Sie über das effektive Installationsverzeichnis Ihrer npm-Pakete.

Wenn Ihr aktuelles Arbeitsverzeichnis ein Knotenpaket oder ein Unterverzeichnis eines Knotenpakets ist, npm rootwird Ihnen das lokale Installationsverzeichnis mitgeteilt. npm root -gzeigt das globale Installationsstammverzeichnis unabhängig vom aktuellen Arbeitsverzeichnis an.

Beispiel:

$ npm root -g
/usr/local/lib/node_modules

Siehe die Dokumentation.

Joe Hawkins
quelle
1
+1 auf diese Antwort (zumindest unter Linux Mint 17 Qianna und npm 3.9.5). Mein globaler node_modulesOrdner befindet sich in /usr/local/lib/node_modules. Wenn ich das tue, dh sudo npm uninstall browserify -g(vorausgesetzt, ich hatte es sudo npm install browserify -gvorher getan ), wird es von dort entfernt.
Nik_m
10
Dies ist eine weitaus nützlichere Antwort, da die Ausgabe zum Erstellen größerer Befehle geeignet ist, ohne den Pfad aus einer Reihe von Ausgaben zu extrahieren.
Adam Tolley
2
Das Standardstammverzeichnis unter Windows ist C: \ Users \ YOUR_USER_NAME \ AppData \ Roaming \ npm \ node_modules
Vincent Tang
2
Für MacOS Mojave 10.14.5 ist es auch/usr/local/lib/node_modules
Jim Aho
89

Für global installierte Module:

Die anderen Antworten geben Ihnen plattformspezifische Antworten, aber eine generische ist folgende:

Wenn Sie ein globales Modul mit installieren npm install -g something, sucht npm nach einer Konfigurationsvariablen, um prefixzu wissen, wo das Modul installiert werden soll.

Sie können diesen Wert erhalten, indem Sie ausführen npm config get prefix

Um alle in diesem Ordner verfügbaren globalen Module anzuzeigen, verwenden Sie npm ls -g --depth 0( depth 0um ihre Abhängigkeiten nicht anzuzeigen).

Wenn Sie den Pfad des globalen Moduls ändern möchten, verwenden Sie npm config editund fügen Sie prefix = /my/npm/global/modules/prefixdie Datei ein oder verwenden Sie npm config set prefix /my/npm/global/modules/prefix.

Wenn Sie einige Tools wie nodist verwenden , ändern sie den Standardinstallationspfad der Plattform für globale npm-Module.

jakub.g
quelle
2
Sie haben meine Folgefrage beantwortet: "Kann mir jemand sagen, wie ich den Speicherort der Node.js-Module ändern kann ?" Hinweis: Der Grund, warum dies für mich wichtig war, war, dass ich meinen PFAD nicht noch einmal ändern musste. Ich habe den Standardvorschlag in der npmrc-Datei, den {npm config get prefx} öffnet, auskommentiert.
HeyZiko
"Wenn Sie einige Tools wie nodist verwenden, ändern sie den Standardinstallationspfad der Plattform für globale npm-Module." +1
Jim Aho
65

Unter Windows habe ich npm list -ges immer herausgefunden. Standardmäßig wurden meine (globalen) Pakete auf installiert C:\Users\[Username]\AppData\Roaming\npm.

9swampy
quelle
9
Nur zu Ihrer Information - Dies ist die% appdata% \ npm des ausführenden Benutzers
Felix
19

Wenn Sie nach der ausführbaren Datei suchen, die npm installiert hat, können Sie dies einfach tun, weil Sie sie in Ihren PATH einfügen möchten

npm bin

oder

npm bin -g
Ken Goodridge
quelle
Wenn Sie npm-Pakete global installiert haben, bei denen der Knoten mit Homebrew installiert und dann npm mit npm selbst aktualisiert wurde, werden möglicherweise command not foundFehler angezeigt . Wenn ja, fügen Sie die aboveto PATH: export PATH=$PATH:$(npm bin -g)voila
jacob
18

In früheren Versionen von NPM-Modulen wurden sie immer in / usr / local / lib / node oder überall dort platziert, wo Sie den npm-Stamm in der .npmrc-Datei angegeben haben. In NPM 1.0+ werden Module jedoch an zwei Stellen installiert. Sie können Module lokal für Ihre Anwendung in /.node_modules installieren lassen oder Sie können sie global installieren lassen, wobei die oben genannten verwendet werden.

Weitere Informationen finden Sie unter https://github.com/isaacs/npm/blob/master/doc/install.md

Nick Campbell
quelle
4
Bei 1.0-Modulen ist etwas zu beachten: / usr / local / lib / node_modules.
Nick Campbell
@ EricSmith Ihr Link ist auch kaputt
nicolimo86
16

Keine direkte Antwort, kann aber helfen ....

Das npm hat auch einen Cache-Ordner, der durch Ausführen npm config get cache( %AppData%/npm-cacheunter Windows) gefunden werden kann.

Die npm-Module werden zuerst hier heruntergeladen und dann in den globalen npm-Ordner ( %AppData%/Roaming/npmunter Windows) oder den projektspezifischen Ordner ( your-project/node_modules) kopiert .

Wenn Sie also npm-Pakete verfolgen möchten und wie, wie die Liste aller heruntergeladenen npm-Pakete (wenn der npm-Cache nicht bereinigt ist) in diesem Ordner angezeigt wird. Die Ordnerstruktur ist wie folgt{cache}/{name}/{version}

Dies kann auch https://docs.npmjs.com/cli/cache helfen

Alireza Fattahi
quelle
14

Wenn das Modul mit dem -gFlag global ( ) installiert wurde , können Sie den übergeordneten Speicherort abrufen, indem Sie den folgenden Befehl ausführen

npm get prefix

oder

npm ls -g --depth=0

Hier wird der Speicherort zusammen mit der Liste der installierten Module gedruckt

Prost :-)

Mohanraj Balasubramaniam
quelle
13

Der einfachste Weg wäre zu tun

npm Liste -g

um das Paket aufzulisten und den installierten Speicherort anzuzeigen.

Ich hatte npm via chololatey installiert, also ist der Ort

C: \ MyProgramData \ocolatey \ lib \ nodejs.commandline.0.10.31 \ tools \ node_modules

C: \ MyProgramData \ ist ein schokoladiger Repo-Speicherort.

Tharaka
quelle
12

Um eine kompakte Liste ohne Abhängigkeiten zu erhalten, verwenden Sie einfach

npm list -g --depth 0
Adam Bubela
quelle
6

Sie können global installierte Module mit dem Befehl finden

npm list -g

Sie erhalten den Speicherort, an dem die Module von node.js installiert wurden.

C:\Users\[Username]\AppData\Roaming\npm

Wenn Sie die Module von node.js lokal in einem Ordner installieren , können Sie den folgenden Befehl eingeben , um den Speicherort anzuzeigen.

npm list
Abdul Alim Shakir
quelle
4

Aus den Dokumenten :

In npm 1.0 gibt es zwei Möglichkeiten, Dinge zu installieren:

  • global - Hiermit werden Module {prefix}/lib/node_modulesabgelegt und ausführbare Dateien abgelegt {prefix}/bin, wo dies {prefix}normalerweise der Fall ist /usr/local. Außerdem werden Manpages installiert {prefix}/share/man, sofern diese bereitgestellt werden.

  • lokal - Hiermit wird Ihr Paket im aktuellen Arbeitsverzeichnis installiert. Knotenmodule gehen ein ./node_modules, ausführbare Dateien gehen ein ./node_modules/.bin/und Manpages werden überhaupt nicht installiert.

Sie können Ihre {prefix}mit bekommen npm config get prefix. (Nützlich, wenn Sie einen Knoten mit nvm installiert haben).

edelans
quelle
3

Aus den Dokumenten :

Pakete werden im Ordner node_modules unter dem Präfix abgelegt. Bei der lokalen Installation bedeutet dies, dass Sie das Laden des Hauptmoduls ("Paketname") oder das Laden anderer Module ("Paketname / lib / path / to / sub / module") benötigen können.

Globale Installationen auf Unix-Systemen gehen zu {Präfix} / lib / node_modules. Globale Installationen unter Windows gehen zu {Präfix} / Knotenmodule (dh kein lib-Ordner.)

Pakete mit Gültigkeitsbereich werden auf die gleiche Weise installiert, außer dass sie in einem Unterordner des entsprechenden Ordners node_modules mit dem Namen dieses Gültigkeitsbereichspräfixes durch das @ -Symbol zusammengefasst sind, z. B. würde npm install @ myorg / package das Paket in {prefix} platzieren / node_modules / @ myorg / package. Weitere Informationen finden Sie im Bereich.

Wenn Sie ein Paket benötigen (), installieren Sie es lokal.

Sie können Ihre {prefix}mit bekommen npm config get prefix. (Nützlich, wenn Sie einen Knoten mit nvm installiert haben).

Lesen Sie über vor Ort .
Lesen Sie mehr über global .

Randall Flagg
quelle
3

In Ubuntu 14.04 werden sie unter installiert

/usr/lib/node_modules

Ashutosh Singh
quelle
3

Ich fing an verrückt zu werden und suchte nach der realen Konfiguration. Hier ist die Liste aller Konfigurationsdateien unter Linux:

  • / etc / npmrc
  • /home/youruser/.npmrc
  • /root/.npmrc

unter Windows: - c / Program \ Files / nodejs / node_modules / npm / npmrc

Dann wird in der Datei das Präfix konfiguriert:

prefix=/usr

Das Präfix ist unter Linux standardmäßig / usr, unter Windows $ {APPDATA} \ npm

Die Knotenmodule befinden sich unter $ prefix tree, und der Pfad sollte $ prefix / bin enthalten

Möglicherweise liegt ein Problem vor:

  • Wenn Sie global installieren, verwenden Sie "sudo su", dann /root/.npmrckann das verwendet werden!
  • Wenn Sie lokal ohne sudo verwenden: für Ihren Benutzer ist es das /home/youruser/.npmrc.
  • Wenn Ihr Pfad nicht Ihr Präfix darstellt
  • Wenn Sie npm set -g prefix /usres verwenden, wird / etc / npmrc global festgelegt, das lokale wird jedoch nicht überschrieben

Hier finden Sie alle Informationen, die fehlten, um herauszufinden, was wo konfiguriert ist. Ich hoffe, ich war erschöpfend.

pdem
quelle
2

Wie die anderen Antworten sagen, ist der beste Weg, dies zu tun

npm list -g

Wenn Sie jedoch eine große Anzahl von npmPaketen installiert haben, kann die Ausgabe dieses Befehls sehr lang und das Scrollen nach oben sehr schwierig sein (manchmal ist es nicht einmal möglich, so weit zurück zu scrollen).

In diesem Fall leiten Sie den Ausgang morewie folgt an das Programm weiter

npm list -g | more
Raphi
quelle
2

Windows 10 : Als ich ausgeführt wurdenpm prefix -g, bemerkte ich, dass sich der Installationsort innerhalb des Pfads der Git-Shell befand, den ich zur Installation verwendet hatte. Selbst wenn dieser Speicherort zum Pfad hinzugefügt wurde, wird der Befehl aus dem global installierten Paket nicht erkannt. Behoben von:

  1. Laufen npm config edit
  2. Ändern des Präfixes in "C: \ Benutzer \ Benutzername \ AppData \ Roaming \ npm"
  3. Hinzufügen dieses Pfads zur Systempfadvariablen
  4. Neuinstallation des Pakets mit -g.
Marc Sloth Eastman
quelle
2

Weitere Antworten erweitern -

npm list -g

zeigt Ihnen den Speicherort der global installierten Pakete.

Wenn Sie diese Liste in eine Datei ausgeben möchten, die Sie einfach in Ihrem Texteditor suchen können:

npm list -g > ~/Desktop/npmfiles.txt

TWLATL
quelle
1

Übrigens sucht npm in übergeordneten Ordnern (bis zu sehr root) nach node_modules, wenn sie in local nicht gefunden werden können.

Vitaliy Markitanov
quelle
1

Wenn Sie versuchen, über Code auf Ihr globales Verzeichnis zuzugreifen, können Sie von zurückverfolgen process.execPath. Um beispielsweise zu finden wsproxy, was sich in befindet {NODE_GLOBAL_DIR}/bin/wsproxy, können Sie einfach:

path.join(path.dirname(process.execPath), 'wsproxy')

Es gibt auch, wie die CLInpm @ ec9fcc1/lib/npm.js#L254 funktioniert mit:

path.resolve(process.execPath, '..', '..')

Siehe auch ec9fcc1/lib/install.js#L521 :

var globalPackage = path.resolve(npm.globalPrefix,
                                 'lib', 'node_modules', moduleName(pkg))

Wo globalPrefixist in ec9fcc1/lib/config/defaults.js#L92-L105 ein Standardwert festgelegt von:

if (process.env.PREFIX) {
    globalPrefix = process.env.PREFIX
} else if (process.platform === 'win32') {
    // c:\node\node.exe --> prefix=c:\node\
    globalPrefix = path.dirname(process.execPath)
} else {
    // /usr/local/bin/node --> prefix=/usr/local
    globalPrefix = path.dirname(path.dirname(process.execPath))

    // destdir only is respected on Unix
    if (process.env.DESTDIR) {
        globalPrefix = path.join(process.env.DESTDIR, globalPrefix)
    }
}
BEIM
quelle
Wie soll das funktionieren? Zum Beispiel ist die Node-Binärdatei bei /usr/bin/node, aber offensichtlich (da dies der Bin ist) sind Module nicht vorhanden; stattdessen sind sie bei /usr/lib/node_modules.
Florian Rappl
Aktualisiert mit Bezug auf die npmImplementierung
AT
Das ist eine andere Geschichte. Sie bringen die Plattform (gut) und die jeweiligen env-Variablen ein (obwohl Sie nicht erwähnt haben, welche wichtigen Funktionen wie moduleName ausgeführt werden, aber ich denke, der durchschnittliche Leser kann daraus schließen). Danke für die Änderung / Korrektur!
Florian Rappl
1

Wenn Sie Visual Studio installiert haben, werden Sie feststellen, dass es eine eigene Kopie des Knotens enthält, die von der Kopie auf dem Pfad getrennt ist, als Sie den Knoten selbst installiert haben. Meiner befindet sich in C: \ Programme (x86) \ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ Microsoft \ VisualStudio \ NodeJs.

Wenn Sie den Befehl npm in diesem Verzeichnis ausführen, finden Sie heraus, welche Knotenmodule in Visual Studio installiert sind.

Andy
quelle
0

Windows 7, 8 und 10 -% USERPROFILE% \ AppData \ Roaming \ npm \ node_modules.

Hinweis: Wenn Sie sich irgendwo im Ordner cd ..befinden, geben Sie ein, bis Sie sich im C:Verzeichnis befinden. Geben Sie dann ein cd %USERPROFILE%\AppData\Roaming\npm\node_modules. Und wird sich magisch %USERPROFILE%in verwandeln Users\YourUserProfile\. Ich wollte nur die Ideen klarstellen, auf die Deckoin der ersten Antwort Bezug genommen wurde. npm list -glistet alle Bits auf, die Sie global installiert haben. Wenn Sie npm packagedann Ihr Projekt finden müssen cd 'your angular project xyz', führen Sie es aus npm list. Es wird eine Liste der Module in angezeigt npm package. Außerdem erhalten Sie eine Liste der dependenciesfehlenden Projekte, und Sie müssen dieses Projekt möglicherweise effektiv ausführen.

surendrapanday
quelle