Antworten:
Sie können die --prefixOption 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 mkdirnotwendig, weil npm sonst könnte ein bereits existierendes wählt node_modulesVerzeichnis 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.jsonin der {prefix}. Was ich auch anstrebe ist, in der Lage zu sein, das packages.jsonim Projekt root zu lassen und gleichzeitig alle Pakete in zu installieren {project root}/{project webroot}.
npm install, aber es --prefixscheint 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_modulesOrdner in den Ordner installieren
<path/to/prefix_folder>/lib/node_modules
requireglobal 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_modulesOrdner, auch wenn bereits ein node_modulesVerzeichnis in der höheren Hierarchie vorhanden ist. Sie können a auch package.jsonim aktuellen Verzeichnis haben und es dann mit der folgenden --prefixOption 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 --prefixOption angegeben haben. Es wird gemäß der npm-Dokumentation für Ordner nur dann aufgelöst, wenn npm installes ohne die --prefixOption verwendet wird.
Can't install <current directory>: Missing package name
package.jsonDatei in erwartet./install/here