Ich bevorzuge alle generierten Dateien und Abhängigkeiten außerhalb mein Quellbaum, während ich daran arbeite.keep node_modules außerhalb der Source-Struktur in der Entwicklung (nicht Produktion)
npm und grunt machen das schwierig: Npm wird nie erlauben, lokale Knotenmodule zu verschieben, also muss ich --global
und --prefix
verwenden. Aber anscheinend unterstützt Grunt ein solches Schema nicht.
Wie erreiche ich mein Ziel angesichts der oben genannten Einschränkungen?
Also, wenn ich ein Projekt:
foo/
.git/
src/
gruntfile.js
package.json
Ich mag keine zusätzliche Dateien in meinem Baum, speziell, node_modules
. (Auch bower_components
und build
etc, aber das ist über Npm.) Dieses Verzeichnis sollte unberührt bleiben, während ich daran arbeite und es laufen. Das ist alles.
Anscheinend npm link
soll dies tun, aber wenn ich es versuchte, installierte es immer noch alle Abhängigkeiten in ./node_modules
. Jede andere Anrufung kann ich nicht ergründen; Die Dokumente sind nicht klar.
Ein verwandter Vorschlag war, ein anderes Verzeichnis mit Symlink zu meinem gruntfile oder package.json zu verwenden, aber grunt hat gerade den symlink aufgelöst und fuhr fort, in meinem ursprünglichen Verzeichnis zu arbeiten!
Bisher ist die nächste, die ich gekommen bin, zu z. ~/.cache/foo/node_modules
von meinem Projekt. Obwohl es mir gelingt, die Deps von meinem Baum fernzuhalten, habe ich immer noch diesen Link, der meinen Arbeitsbereich überfüllt.
Ich möchte wissen, ob es einen besseren Weg gibt. Wird eine Kombination aus npm install
, npm link
, ln
, ~/.cache
, NODE_PATH
und PWD
es mir erlauben, mein Projekt von meinem Quellbaum aus auszuführen und es von allen Artefakten fernzuhalten, die keine Quellen sind?
Das wäre ziemlich ungewöhnlich; Normalerweise befindet sich Ihre Gruntdatei (und oft auch Ihre Knotenmodule) im Quellbaum, um das Arbeiten in verschiedenen Umgebungen konsistenter zu gestalten. –
Ich komme zu sehen, es ist ungewöhnlich, aber ich habe Schwierigkeiten zu verstehen, warum. Ich kann die Vorteile der Knotenabhängigkeit bei der Bündelung von Abhängigkeiten verstehen, sehe aber nicht, warum dieses Bereitstellungsschema in meine Entwicklungsumgebung übertragen werden sollte. – avdd
Der Grund ist, dass es sicherstellt, dass Ihre Benutzer/Entwickler die Software weiterhin verwenden oder erstellen können, selbst wenn ein Knotenmodul ausfällt oder die erforderliche Funktionalität durchbrochen wird. –