scalajs:一个项目中有多个应用程序?
如果我正确理解scalajs文档,它只允许每个项目生成一个javascript。 有没有办法避免这种限制 目前,我为Play framework创建了scalajs子项目。在这个子项目中,我计划为我正在使用的服务创建所有scalajs应用程序。现在我发现了这个局限性,这真的让人困惑和恼火,因为我能想到的唯一两个解决方案是:scalajs:一个项目中有多个应用程序?,scala,sbt,scala.js,Scala,Sbt,Scala.js,如果我正确理解scalajs文档,它只允许每个项目生成一个javascript。 有没有办法避免这种限制 目前,我为Play framework创建了scalajs子项目。在这个子项目中,我计划为我正在使用的服务创建所有scalajs应用程序。现在我发现了这个局限性,这真的让人困惑和恼火,因为我能想到的唯一两个解决方案是: 创建一个我不能接受的“超级脚本” 为每个scalajs应用程序创建单独的子项目 对于一个大项目来说,它们都是不可接受的。每个scalaj都在它自己的子项目中,并通过SBT管理
对于一个大项目来说,它们都是不可接受的。每个scalaj都在它自己的子项目中,并通过SBT管理一切 这是一个比较复杂的play项目示例,它有6个以上的子项目,可以编译成一个文件。 检查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-未优化(3Mb)
compile in compileScala.js确实是为每个项目生成一个JavaScript输出而设计的。实际上没有办法改变这一点
但是,这不是Scala.js的限制。Scala/Java本身的行为方式是相同的:您不能为Scala/Java应用程序从单个sbt项目生成两个.jar。所以我不明白为什么Scala.js的行为会有任何不同
按照@user3430609的建议,在您的sbt构建中使用它。感谢您提供了一个很好的示例,它适合我在原始问题中描述的情况。如果可以的话,我会投两次票。
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)),