7

バックエンドとフロントエンドでコードを共有する必要があるFinchScala.jsを使用して新しいプロジェクトを開始しました。

そして私はfastOptJS、Finch によって作成された JS を提供する良い方法について懸念しています。js/target/scala-2.11/*.js現在、ファイルを からにコピーするカスタム SBT タスクを使用していますjvm/src/main/resources。しかし、もっと良い方法がないか考え中です。

sbt-play-scalajs プラグインを使った素晴らしいSPA チュートリアルを見ましたが、これは Play にしか適用できないようです。

4

1 に答える 1

7

私が成功裏に使用した 1 つのアプローチには、3 つの sbt プロジェクトと、静的コンテンツ用のルートに追加のフォルダーが含まれます。

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

ではbuild.sbt、次のようなものを使用します。

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")))

すべてのアセットは標準リソースとしてアクセスでき、sbt-assembly.

于 2016-06-04T18:30:39.497 に答える