2015-01-24 7 views
5

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?

+1

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. –

+0

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

+0

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. –

Antwort

4

Schwimmen gegen Standards ist eine sehr schlechte Idee ®.

Was Sie können (und sollte) zu tun ist hinzuzufügen node_modules/ zu Ihrem .gitignore (oder was auch immer ignorieren Sie für Ihre angegebenen Quellkontrollsystem Datei haben), so dass Sie nicht Version diese Dateien.

Sie können auch ein Verzeichnis wie src/ verwenden, um Ihren Code zu organisieren und ihn vor den obligatorischen Konfigurationsdateien zu schützen (package.json, Gruntfile.coffee, usw.).

+2

Der "Standard" besteht also darin, Quelldateien zu kombinieren und Artefakte zu erstellen? Ist das ein "Standard", basierend auf Argumentation oder Trägheit? Kannst du erklären, warum es eine schlechte Idee ist? Es scheint mir eine bessere Idee zu sein, keinen Mist in meinem Arbeitsbereich zu haben und irgendwo anders cachbare Artefakte zu zentralisieren. Ich habe ~/.cache für diesen Zweck. – avdd

+1

@avdd Sie * nicht * vermischen sie; Sie trennen sie in entsprechende Verzeichnisse. '/ src' enthält Quelle,'/test' enthält Einheit und andere Tests, '/ build' (oder ähnlich) enthält die Build-Version,'/node_modules' enthält Knotenmodule, die zum Erstellen und Testen benötigt werden, und so weiter. Es gibt viele Theorien über * genau * wie man die Organisation macht, aber es gibt weitgehende Übereinstimmung, dass Dinge wie Gruntfiles nicht nur "Build-Artefakte" sind. Wenn es für Ihren Entwicklungsprozess entscheidend ist und "es" nicht das Betriebssystem ist, gehört es in die gleiche Ordnerhierarchie wie der Rest des Projekts. –

+0

Mehr Beweise Knoten Menschen einfach nicht verstehen, nehme ich an. – avdd

Verwandte Themen