2016-06-06 14 views
5

Ich spiele mit Figwheel und schreibe eine einfache, einseitige App, die keine serverseitige Intelligenz erfordert.Wie stelle ich eine Einzelseiten-App bereit? in ClojureScript/Figwheel auf einen statischen Server geschrieben?

Im Prinzip ist diese App. könnte auf jedem statischen Webserver platziert werden.

Aber wie kann ich es tatsächlich bereitstellen? Es sieht so aus, als ob die main.js in meiner Figwheel-Entwicklungsumgebung die figwheel Verbindung aufbaut.

Welche js und html Dateien muss ich eigentlich auf meinen statischen Server legen? Hat Figwheel sie erstellt, oder muss ich eine neue main.js und index.html erstellen? Und wo finde ich Beispiele?

Die Dokumentation ist großartig, um mit dem Einsatz von Figwheel zu beginnen, aber überraschend zurückhaltend bei der Vorgehensweise nach der Entwicklung.

Antwort

5

Schritt 1: Stellen Sie die Produktion Baujahr: lein do clean, cljsbuild once min

Schritt 2: alles in resources/public in einer öffentlich zugänglichen Stelle.

Hier ist das Skript Ich benutze dies in einem Beispiel-Projekt zu tun: https://github.com/timothypratley/whip/blob/master/deploy.sh

Die HTML-Ressourcen nicht zwischen lokaler Entwicklung und dem Einsatz ändern. Das einzige, was anders ist, sind die kompilierten Artefakte. Sie können in der Tat Entwicklung kompilierte Artefakte auch gut bereitstellen. Der einzige Grund, warum ein "Production Build" empfohlen wird, ist, dass bei der lokalen Entwicklung die JS-Zwischendateien nicht zusammengefügt werden, da es schneller ist, nur den geänderten Code in den Browser zu laden. Für die Bereitstellung ist es besser, ein einzelnes kompiliertes Artefakt zu haben. Dieser einzelne kompilierte JS kann erweiterte Optimierungen oder einfach einfache Optimierungen abhängig davon haben, wie Sie die Builds in Ihrer project.clj konfigurieren. Du brauchst dir darüber keine Sorgen zu machen, ich erkläre es nur, weil du speziell gefragt hast, was sich ändert.

Es mag komisch klingen, dass sich die HTML-Seite überhaupt nicht ändert, also erklären wir das ein wenig mehr. Die HTML-Seite enthält eine kompilierte JS, wenn Sie figwheel ausführen, wenn Sie diese JS öffnen, sehen Sie diese JS-Dateien. Aber wenn Sie figwheel beenden und einen sauberen "production" -Build erstellen, werden Sie sehen, dass der gesamte Code in die JS-Datei eingeht. Ziemlich schwierig, nicht wahr?

Dieses Whip-Projekt sollte das Beispiel liefern, das Sie suchen, lassen Sie mich bitte wissen, wenn etwas davon unklar ist.

Es verwendet github pages und das Deployment-Ziel, aber Sie brauchen nur noch alles im gehosteten Ressourcen/public-Verzeichnis. Sie können also ein sehr ähnliches Skript mit jedem Bereitstellungsziel verwenden.

+0

Danke. Ich hatte nicht wirklich cljsbuild installiert, was mich für eine Weile verwirrte, aber diese Antwort gab mir die Hinweise, die ich brauchte, um alles herauszufinden. Prost. – interstar

+0

Sieht so aus, als ob in diesem Skript ein kleiner Tippfehler enthalten ist. Der letzten Zeile muss "cd ../ .." vorangestellt werden (oder durch "rm -fr .git" ersetzt werden - obwohl das unheimlich wirkt, sollte etwas früher im Skript bizarr falsch laufen, oder sogar ein Bearbeitungsfehler in der frühere Zeilen). –

+0

Hallo David! :) Danke für den Hinweis auf den Fehler. Ich habe es behoben :) –