webentwicklung-frage-antwort-db.com.de

Wo sollen meine npm-Module unter Mac OS X installiert werden?

Ich habe versucht, phonegap über npm zu aktualisieren, als ich Probleme bekam. Kurz gesagt, es gibt zwei node_modules-Verzeichnisse auf meinem Computer.

/usr/local/lib/node_modules
/usr/local/share/npm/lib/node_modules

Beim Ausführen von npm upgrade -g phonegap wird angezeigt, dass npm die Kopie des Pakets aktualisiert, das sich in /usr/local/lib/node_modules befindet. Wenn ich jedoch which phonegap finde, verweist der Symlink auf die ältere Installation unter /usr/local/share/npm/lib/node_modules.

Wenn ich versuche, ein eigenständiges Paket wie express zu installieren, werden die Dateien im Verzeichnis /usr/local/lib/node_modules installiert. es wird jedoch an keiner Stelle in meinem $PATH ein Symlink zur ausführbaren Datei erstellt.

Zwei Fragen:

  • Welches ist das richtige Verzeichnis für Knotenmodule unter Mac OS X?
  • Wie kann ich npm so konfigurieren, dass ausführbare Dateien in meinem $PATH verknüpft werden, wenn Software installiert wird?

Bonuspunkte: Beeinflusst die Installationsmethode node die Konfiguration? Es gibt eine viele Optionen .


EDIT: Ich fand heraus, dass in meinem /usr/local/bin Symlinks erstellt wurden, aber mein .bash_profile wurde mit /usr/local/share/npm/bin vor /usr/local/bin in meinem $PATH eingerichtet. Ich erinnere mich vage, dass ich diesen Pfad irgendwann zu meinem Profil hinzugefügt habe, aber ich bin mir nicht sicher, warum.

Die Frage lautet nun: Wie habe ich zwei verschiedene node_modules-Verzeichnisse auf meinem Computer gefunden und warum sollte ich meinen node_modules im share/npm/lib-Unterverzeichnis statt in /usr/local/lib haben wollen? 

46
Ben Harold

/usr/local/lib/node_modules ist das richtige Verzeichnis für global installierte Knotenmodule.

/usr/local/share/npm/lib/node_modules macht für mich keinen Sinn. Ein Problem hier ist, dass Sie verwirrt sind, weil es zwei Verzeichnisse gibt, die als node_modules bezeichnet werden:

/usr/local/lib/node_modules
/usr/local/lib/node_modules/npm/node_modules

Letzteres scheint ein Knotenmodul zu sein, das mit Node geliefert wurde, z. B. lodash, wenn das erste Knotenmodul ist, das ich mit npm installiert habe.

76

Zweiter Thomas David Kehoe , mit folgendem Vorbehalt -

Wenn Sie einen Knotenversionsmanager (NVM) verwenden, werden Ihre globalen Knotenmodule unter der Version des Knotens gespeichert, den Sie zum Zeitpunkt der Speicherung des Moduls verwenden. 

Also ~/.nvm/versions/node/{version}/lib/node_modules/.

37
ginna
npm root -g

um den globalen Speicherort von npm_modules zu überprüfen

3
lazyTank

enter image description here

Drücken Sie CMD + Shift G und fügen Sie diese URL ein.

Der Ordner usr ist ausgeblendet und daher bei der allgemeinen Suche nicht sichtbar.

0
Raaj Kanchan

Wenn Sie wissen möchten, wo sich Ihre NPM-Pakete befinden, sollten Sie:

which npm // locate a program file in the user's path SEE man which
// OUTPUT SAMPLE
/usr/local/bin/npm
la /usr/local/bin/npm // la: aliased to ls -lAh SEE which la THEN man ls
lrwxr-xr-x  1 t04435  admin    46B 18 Sep 10:37 /usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js

Da es sich bei npm jedoch um ein NODE-Paket handelt, wird es am selben Ort wie andere Pakete installiert (EUREKA). Um zu bestätigen, sollten Sie cd in node_modules eingeben und das Verzeichnis auflisten.

cd /usr/local/lib/node_modules/
ls
#SAMPLE OUTPUT
@angular npm .... all global npm packages installed

OR

npm -root -g

Wie im Kommentar von @anthonygore

0
T04435