2

我正在尝试编写一个包含 ScalaJS 和部分 Play 框架的应用程序。我正在使用ScalaJS 捆绑器。它很好地捆绑了我的 JavaScript,我可以看到它们应该去的结果文件。

在此处输入图像描述

但我注意到只有client-jsdeps.jsclient-fastopt.js应用程序才可用。原因是它们是唯一复制到路径的文件server/target/web/public/main。我到处寻找我能想到的地方,sbt构建文件,配置文件,到处都是,我找不到为什么这些文件被复制而没有其他文件。我想-bundle改为复制文件。那个设定在哪里?

值得注意的是,与应用打包的两个文件并没有出现在用户可编辑的路径中server/public/js,它们是直接复制到 WAR 文件中的,因此在target目录中可见。

4

1 回答 1

3

文档中:

对于 sbt-web 集成,使用sbt-web-scalajs-bundler插件而不是sbt-scalajs-bundler

addSbtPlugin("ch.epfl.scala" % "sbt-web-scalajs-bundler" % "0.13.1")

然后,WebScalaJSBundlerPlugin在使用 sbt-web 的项目上启用:

lazy val server = project
  .settings(
    scalaJSProjects := Seq(client),
    pipelineStages in Assets := Seq(scalaJSPipeline)
  )
  .enablePlugins(WebScalaJSBundlerPlugin)

lazy val client = project.enablePlugins(ScalaJSBundlerPlugin, ScalaJSWeb)

您还需要ScalaJSBundlerPlugin在 Scala.js 项目上设置,如前一节所述,以及sbt-web-scalajs插件,如其文档中所述。

WebScalaJSBundlerPlugin插件自动将scalaJSPipeline任务配置为使用包而不是 Scala.js 编译的输出。

你可以在这里看到一个完整的例子。


你遵循那个指南吗?

于 2018-09-12T06:43:20.863 回答