2016-06-04 16 views
4

Ich habe ein neues Projekt mit Finch und Scala.js gestartet, wo Backend und Frontend einige Code teilen müssen.Serving Scala.js Vermögenswerte

Und ich bin besorgt über eine gute Möglichkeit, JS von fastOptJS von Finch geliefert zu dienen. Momentan verwende ich eine benutzerdefinierte SBT-Task, die Dateien von js/target/scala-2.11/*.js zu jvm/src/main/resources kopiert. Aber ich frage mich, ob es einen besseren Weg gibt, es zu tun.

Ich sah genial SPA tutorial, die sbt-play-scalajs Plugin verwendet, aber es scheint nur für Play anwendbar.

Antwort

3

Ein Ansatz, die ich verwendet habe, erfolgreich beinhaltet 3 sbt Projekte und einen zusätzlichen Ordner an der Wurzel für statische Inhalte:

. 
├── build.sbt 
├── client 
├── server 
├── shared 
└── static 

Im build.sbt, würden Sie dann in etwa wie folgt verwendet werden:

lazy val sharedSettings = Seq(
    // File changes in `/static` should never trigger new compilation 
    watchSources := watchSources.value.filterNot(_.getPath.contains("static"))) 

lazy val server = project 
    .settings(sharedSettings: _*) 
    // Adds `/static` to the server resources 
    .settings(unmanagedResourceDirectories in Compile += baseDirectory.value/".."/"static") 

lazy val client = project 
    .enablePlugins(ScalaJSPlugin) 
    .settings(sharedSettings: _*) 
    // Changes Scala.js target folder to "/static/content/target" 
    .settings(Seq(fullOptJS, fastOptJS, packageJSDependencies, packageScalaJSLauncher, packageMinifiedJSDependencies) 
    .map(task => crossTarget in (Compile, task) := file("static/content/target"))) 

Alle Ihre Vermögenswerte können als Standard-Ressourcen zugegriffen werden, dann wird auch in Ihrem Fettglas verpackt, wenn Sie etwas wie sbt-assembly verwenden.

+1

[Hier ist] (https://github.com/OlivierBlanvillain/full-stack-scala/blob/master/build.sbt) ein komplettes Build-Beispiel, das sich mit anderen Sachen beschäftigt, wie zum Beispiel das Nachladen des Servers mit 'sbt Revolver "und Vereinheitlichung von' fastOptJS'/'fullOptJS'. – OlivierBlanvillain

+0

Hey, danke! Sieht so aus, als ob ich danach gesucht hätte. – chuwy