如果我正确理解了scalajs文档,它只允许每个项目生成一个javascript。 有没有办法避免这种限制?
目前我为Play框架创建了scalajs子项目。在这个子项目中,我计划为我正在处理的服务创建所有scalajs应用程序。现在我发现了这个限制,它真的令人困惑和讨厌,因为我能想到的唯一两个解决方案是:
对于一个大项目来说,它们都是不可接受的。
答案 0 :(得分:5)
每个scalajs都在自己的子项目中并通过SBT管理所有内容MutliProject 这是一个有点复杂的游戏项目示例,它有6个以上的子项目可以编译成一个文件。 scala-js-binding 检查Build.scala
lazy val preview = (project in file(".")).enablePlugins(PlayScala) settings(previewSettings: _*) dependsOn shared dependsOn bindingPlay aggregate frontend
//aggregate scalaJs
lazy val frontend = Project(
id = "frontend",
base = file("frontend") ) dependsOn shared dependsOn binding
...
scalajsOutputDir := baseDirectory.value / "public" / "javascripts" / "scalajs",
//fastOptJs - not optimized (3Mb)
compile in Compile <<= (compile in Compile) dependsOn (fastOptJS in (frontend, Compile)),
//fullOptJS - fully optimized (330k)
dist <<= dist dependsOn (fullOptJS in (frontend, Compile)),
答案 1 :(得分:3)
Scala.js确实旨在为每个项目生成一个JavaScript输出。实际上没有办法改变这一点。
但是,这不是Scala.js的限制。 Scala / Java本身的行为方式相同:您无法从单个sbt项目为Scala / Java应用程序生成两个.jars。所以我不明白为什么Scala.js应该有不同的行为。
根据@ user3430609的建议,在您的sbt版本中使用multiple projects。