Diese Frage, wie es ist, lädt opinionated Antworten, werde ich sagen, dies ist so beginnen keineswegs die nur Weg zu gehen, aber meiner Meinung nach, ist es am einfachsten, mit zu arbeiten und macht das Beste Sinn.
Die Produktion Client-Code, nach Vorverarbeitung, sollte in my-app/dist
oder my-app/dst
befinden, die entweder distribution
oder destination
bedeuten könnte, je nachdem wie man es betrachtet. Wie auch immer, meine Empfehlung ist commit diesen Ordner, wie es Ihnen eine Menge Ärger Debugging remote spart.
Zum Beispiel, wenn Ihr Code lokal funktioniert, aber nicht remote, mit etwas wie der postinstall
Hook, um Ihre dist
Ordner zu erstellen, fügt einen weiteren Verdächtigen zu überprüfen, wenn Sie versuchen zu ermitteln, was das Problem mit Ihrem Programm ist.
Ein weiterer Vorteil des Ordners dist
ist, dass Sie alle Pakete, die Sie für Ihren Build-Prozess verwenden, als devDependencies
statt dependencies
angeben können. Dies ist eine riesige plus, und macht die Bereitstellung viel schneller, sowie weniger Speicherverbrauch auf Ihrem Heroku-Prozess.
aber sagen, dass ich noch empfehlen, eine automatisierte watch
Aufgabe (wie Sie wahrscheinlich schon planen zu tun) mit Ihrem dist
Ordner für einfache Entwicklung zu bauen, auch wenn Sie sich entscheiden, Sie wollen nicht, dass die gleiche Build-Prozess verwenden, remote und entscheiden Sie sich stattdessen dafür, das Verzeichnis dist
zu übergeben. Sie könnten das als einen benutzerdefinierten npm
Befehl hinzufügen, z.npm run build
und rufen Sie Ihre gulp
Aufgabe auf.
Eine letzte Sache. Für diejenigen von Ihnen, die Templating-Sprachen wie pug
oder dust
oder ejs
anstelle eines Frameworks wie react
oder angular
verwenden, empfehle ich zu bestimmen, ob Sie eine Ihrer Vorlagen ausführen können, um statische HTML-Dateien zu erstellen, die in der Produktion geliefert werden.
Wenn nicht, sollten Sie zumindest Ihre Vorlagen kompilieren (nicht zu verwechseln mit der Ausführung), indem Sie den Empfehlungen Ihrer jeweiligen Vorlagensprache folgen. In der Regel empfehlen sie, mithilfe des Befehlszeilendienstprogramms die kompilierten Vorlagen zu generieren, damit sie nicht jedes Mal kompiliert werden müssen, wenn sie in der Produktion aufgerufen werden. Dadurch reagiert Ihr node.js-Server schneller auf Anfragen, da mehr Speicher zum Zwischenspeichern der kompilierten Vorlagen benötigt wird.
Verwenden Sie eine Templating-Sprache? Das beeinflusst, welche Art von Layout Sie berücksichtigen sollten. Und ja, Sie sollten entweder den "dist" -Ordner festschreiben oder eine Aufgabe mit dem 'npm postinstall'-Hook erzeugen lassen. –
Client ist react/redux. Ist das, was du fragst? – Ben
Ja, das macht es klarer. Ich würde persönlich das 'dist' an die Wurzel setzen, d. H.' My-app/dist', das scheint die Konvention zu sein, besonders da 'dist' nicht _src' ist. –