我正在尝试编写一个应用程序,它是ScalaJS和Play框架的一部分。我正在使用ScalaJS bundler。它捆绑我的JavaScript很好,我可以看到它们应该去的结果文件。
但我注意到只有client-jsdeps.js
和client-fastopt.js
可供应用程序使用。原因是它们是唯一复制到路径server/target/web/public/main
的文件。我看到了我能想到的任何地方,sbt
构建文件,配置文件,无处不在,我找不到为什么这些文件被复制而没有其他。我想要复制-bundle
文件。那个环境在哪里?
值得注意的是,随应用程序打包的两个文件不会出现在用户可编辑的路径server/public/js
中,它们会直接复制到WAR文件中,因此可以在target
目录中看到。
对于sbt-web集成,使用sbt-web-scalajs-bundler
插件而不是sbt-scalajs-bundler
:
addSbtPlugin("ch.epfl.scala" % "sbt-web-scalajs-bundler" % "0.13.1")
然后,在使用sbt-web的项目上启用WebScalaJSBundlerPlugin
:
lazy val server = project
.settings(
scalaJSProjects := Seq(client),
pipelineStages in Assets := Seq(scalaJSPipeline)
)
.enablePlugins(WebScalaJSBundlerPlugin)
lazy val client = project.enablePlugins(ScalaJSBundlerPlugin, ScalaJSWeb)
您还需要在Scala.js项目中设置ScalaJSBundlerPlugin
,如上一节所述,以及sbt-web-scalajs
中描述的their documentation插件。
WebScalaJSBundlerPlugin
插件自动配置scalaJSPipeline
任务以使用bundle而不是Scala.js编译的输出。
你可以看到一个完整的例子here。
你遵循那个指南吗?