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.
[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
Hey, danke! Sieht so aus, als ob ich danach gesucht hätte. – chuwy