Antworten:
Sie können die --prefix
Option verwenden:
mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>
Die Pakete werden dann in installiert ./install/here/node_modules
. Das ist mkdir
notwendig, weil npm sonst könnte ein bereits existierendes wählt node_modules
Verzeichnis weiter oben in der Hierarchie. (Siehe npm-Dokumentation zu Ordnern .)
npm install
(ohne Paketnamen) anzugeben ? Ich habe das direkt angefragt, aber dann sucht npm package.json
in der {prefix}
. Was ich auch anstrebe ist, in der Lage zu sein, das packages.json
im Projekt root zu lassen und gleichzeitig alle Pakete in zu installieren {project root}/{project webroot}
.
npm install
, aber es --prefix
scheint eine schönere Lösung zu sein, wenn es keine Rekursion verursacht hat.
In der Dokumentation heißt es: Verwenden Sie die Präfixoption zusammen mit der globalen Option :
Die Präfixkonfiguration ist standardmäßig der Speicherort, an dem der Knoten installiert ist. Auf den meisten Systemen ist dies / usr / local . Unter Windows ist dies die genaue Position der binären Datei node.exe. Auf Unix-Systemen ist es eine Ebene höher , da der Knoten normalerweise unter {Präfix} / bin / Knoten und nicht unter {Präfix} / Knoten.exe installiert wird .
Wenn das globale Flag gesetzt ist, installiert npm Dinge in dieses Präfix. Wenn es nicht festgelegt ist, wird das Stammverzeichnis des aktuellen Pakets oder das aktuelle Arbeitsverzeichnis verwendet, sofern es nicht bereits in einem Paket enthalten ist.
(Hervorhebung durch sie)
Also in Ihrem Stammverzeichnis können Sie mit installieren
npm install --prefix <path/to/prefix_folder> -g
und es wird den node_modules
Ordner in den Ordner installieren
<path/to/prefix_folder>/lib/node_modules
require
global installierten Pakete, oder?
Ab npm Version 3.8.6 können Sie verwenden
npm install --prefix ./install/here <package>
im angegebenen Verzeichnis zu installieren. NPM erstellt automatisch einen node_modules
Ordner, auch wenn bereits ein node_modules
Verzeichnis in der höheren Hierarchie vorhanden ist. Sie können a auch package.json
im aktuellen Verzeichnis haben und es dann mit der folgenden --prefix
Option im angegebenen Verzeichnis installieren :
npm install --prefix ./install/here
Ab npm 6.0.0 können Sie verwenden
npm install --prefix ./install/here ./
um die Datei package.json im aktuellen Verzeichnis im Verzeichnis "./install/here" zu installieren. Auf einem Mac ist mir aufgefallen, dass ein Symlink zum übergeordneten Ordner im Verzeichnis node_modules erstellt wird. Aber es funktioniert immer noch.
HINWEIS: NPM berücksichtigt den Pfad, den Sie über die --prefix
Option angegeben haben. Es wird gemäß der npm-Dokumentation für Ordner nur dann aufgelöst, wenn npm install
es ohne die --prefix
Option verwendet wird.
Can't install <current directory>: Missing package name
package.json
Datei in erwartet./install/here