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:
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?
/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.
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/
.
npm root -g
um den globalen Speicherort von npm_modules zu überprüfen
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
npm -root -g
Wie im Kommentar von @anthonygore