2014-11-28 2 views
7

Ich habe zwei getrennte Git-Repos, eines hält einen Scala-Server mit sbt, das andere hält ein Webapp-Frontend mit npm/bower/gulp.Wie integriere npm/gulp/bower building process in sbt?

Im Server Repo, habe ich bereits eine Aufgabe, ein Standalone-JAR (nicht die Standard-Paket-Aufgabe) zu erstellen; Im Frontend Repo kann ich mit npm install && npm run build bauen, was zu einem eigenständigen Verzeichnis _public führen würde.

Jetzt würde ich gerne das UI-Verzeichnis _public während sbt Gebäude jar Task enthalten, frage ich mich, ob es eine bessere Möglichkeit, dies zu tun als manuell spawn externen Prozess in sbt, npm aufrufen?

+0

Was ist los mit einem externen Prozess? –

Antwort

4

Wenn Ihr Frontend NPM und Gulp verwendet, um die App zu erstellen, müssen Sie es mit einer NodeJS-Engine ausführen (oder vielleicht JVM-Engines wie Rhino oder Nashorn können es tun? Nicht sicher) und es erfordert einen externen Prozess.

Die Frage, die Sie sich stellen sollten, ist: Wollen Sie wirklich die Bereitstellung Ihres Backends von der Bereitstellung Ihres Frontend koppeln? Gibt es nicht einen Fall, in dem Sie nur einen und nicht den anderen bereitstellen möchten?

Ich denke SBT zu verwenden, um Sie Frontend zu stellen, ist nett, aber wenn Ihr Frontend komplex ist, würden Sie es lieber getrennt von SBT behalten.

Ihre JS-App muss nicht unbedingt als öffentliches Objekt von Play bereitgestellt werden. Sie können sie einfach an einem eigenen Ort bereitstellen und in einer Play HTML-Vorlage referenzieren.

0

Ich stimme Sebastien zu, den Front-End-Entwickler (und vielleicht sogar den Deploy) getrennt von deinem Backend zu halten, da ich gerade selbst diese Lektion lerne.

Das heißt, schauen Sie sich SbtWeb (Task-Workflow) zusammen mit WebJars (Paket-Management). SbtWeb hat mehrere Plugins, die die Grundlagen abdecken können (Uglify, Concat, Filter), und in einigen Fällen denke ich, wenn der Knoten installiert ist, kann er es direkt verwenden.