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

时间:2018-09-10 22:51:59

标签: scala.js playframework-2.6 scalajs-bundler

我正在尝试编写一个由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文件中,因此在{{1}中可见}目录。

1 个答案:

答案 0 :(得分: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,并且 their documentation中所述的sbt-web-scalajs插件。

WebScalaJSBundlerPlugin插件会自动配置scalaJSPipeline任务以使用 捆绑包,而不是Scala.js编译的输出。

您可以看到完整的示例here


您遵循该指南吗?