在Play中,如何将js文件从ScalaJS客户端复制到服务器?

问题描述 投票:1回答:1

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

enter image description here

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

值得注意的是,随应用程序打包的两个文件不会出现在用户可编辑的路径server/public/js中,它们会直接复制到WAR文件中,因此可以在target目录中看到。

scala.js playframework-2.6 scalajs-bundler
1个回答
1
投票

来自documentation

对于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


你遵循那个指南吗?

© www.soinside.com 2019 - 2024. All rights reserved.