scalajs:一个项目中有多个应用程序?

scalajs:一个项目中有多个应用程序?,scala,sbt,scala.js,Scala,Sbt,Scala.js,如果我正确理解scalajs文档,它只允许每个项目生成一个javascript。 有没有办法避免这种限制 目前,我为Play framework创建了scalajs子项目。在这个子项目中,我计划为我正在使用的服务创建所有scalajs应用程序。现在我发现了这个局限性,这真的让人困惑和恼火,因为我能想到的唯一两个解决方案是: 创建一个我不能接受的“超级脚本” 为每个scalajs应用程序创建单独的子项目 对于一个大项目来说,它们都是不可接受的。每个scalaj都在它自己的子项目中,并通过SBT管理

如果我正确理解scalajs文档,它只允许每个项目生成一个javascript。 有没有办法避免这种限制

目前,我为Play framework创建了scalajs子项目。在这个子项目中,我计划为我正在使用的服务创建所有scalajs应用程序。现在我发现了这个局限性,这真的让人困惑和恼火,因为我能想到的唯一两个解决方案是:

  • 创建一个我不能接受的“超级脚本”
  • 为每个scalajs应用程序创建单独的子项目

  • 对于一个大项目来说,它们都是不可接受的。

    每个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)),