Gibt es eine Möglichkeit, das Verzeichnis node_modules in einer Anwendung zu verschieben, um beispielsweise / vendor / node_modules zu verwenden, wie es bower mit der Datei bowerrc tut? Ich dachte, es könnte in package.json angegeben werden, aber ich kann anscheinend keine Lösung finden. Deine Hilfe ist sehr Willkommen.
91
node_modules
in festgelegt werden sollpackage.json
, und die Antwort von xShirase bietet einfach keine Möglichkeit, dies zu tun.Antworten:
Ja, Sie können, setzen Sie einfach die env-Variable NODE_PATH:
Laut dem Dokument:
Quelle
quelle
process.env
Kurz gesagt: Es ist nicht möglich und wird anscheinend nie unterstützt (siehe hier https://github.com/npm/npm/issues/775 ).
Es gibt einige hackige Workarounds bei der Verwendung der CLI- oder ENV-Variablen (siehe die aktuell ausgewählte Antwort), .npmrc-Config-Files oder
npm link
- was sie alle gemeinsam haben: Sie sind nie nur projektspezifisch, sondern immer eine Art vonglobal
Lösungen.Für mich ist keine dieser Lösungen wirklich sauber, da Mitwirkende an Ihrem Projekt immer eine spezielle Konfiguration erstellen müssen oder über spezielle Kenntnisse verfügen müssen - sie können nicht einfach
npm install
und es funktioniert.Also: Entweder müssen Sie Ihre package.json in dasselbe Verzeichnis stellen, in dem Ihre node_modules installiert werden sollen, oder Sie müssen damit leben, dass sie sich immer im Stammverzeichnis Ihres Projekts befinden.
quelle
Garn unterstützt diese Funktion:
Ihre Erfahrung kann jedoch variieren, je nachdem, welche Pakete Sie verwenden. Ich bin mir nicht sicher, ob du in dieses Kaninchenloch gehen willst.
quelle
Ich bin mir nicht sicher, ob Sie dies im Sinn hatten, aber ich bin auf diese Frage gestoßen, weil ich nicht in
node_modules
meinem Projektverzeichnis installieren konnte, da es auf einem Dateisystem bereitgestellt war, das keine Symlinks unterstützte (ein "freigegebener" VM-Ordner ).Ich habe die folgende Problemumgehung gefunden:
package.json
Datei in einen temporären Ordner in einem anderen Dateisystemnpm install
dorthinnode_modules
Verzeichnis zurück in das Projektverzeichnis,cp -r --dereference
um Symlinks zu Kopien zu erweitern.Ich hoffe, dies hilft jemand anderem, der diese Frage beantwortet, wenn er nach einer Möglichkeit sucht,
node_modules
in ein anderes Dateisystem zu wechseln .Andere Optionen
Es gibt eine andere Problemumgehung, die ich bei dem Github-Problem gefunden habe, mit dem @Charminbear verknüpft ist. Dies funktioniert jedoch nicht,
grunt
da esNODE_PATH
gemäß https://github.com/browserify/resolve/issues/136 nicht unterstützt wird :quelle