gpt4 book ai didi

playframework - 如何将 JavaScripts 的输出路径从 scala.js 添加到 Play?

转载 作者:行者123 更新时间:2023-12-04 18:28:33 32 4
gpt4 key购买 nike

我正在尝试 Play (完全是 sbt-web)以访问从 scala.js 创建的 javascript 文件。

unmanagedResourceDirectories in Assets +=我可以为 sbt-web 设置一个路径以自动复制到正确的 Assets 目录。问题是我不会硬编码 javascript 文件的路径。

我的 Build.scala 看起来像这样:

import play.Play._
import com.typesafe.sbt.web.Import.Assets
import scala.scalajs.sbtplugin.ScalaJSPlugin._
import scala.scalajs.sbtplugin.ScalaJSPlugin.ScalaJSKeys._

object Build extends sbt.Build {
override def rootProject = Some(jvm)

lazy val js = project
.settings(scalaJSSettings: _*)
.settings(
scalaVersion := "2.11.2"
)

lazy val jvm = project
.settings(play.PlayScala)
.settins(
scalaVersion := "2.11.2",
// This is the interesting line
unmanagedResourceDirectories in Assets += (target in js).value / "scala-2.11",
compile in Compile <<= (compile in Compile) dependsOn (fastOptJS in (js, Compile))
)
.aggregate(js)
}

有没有办法从 scala.js 获取 javascript 的输出路径?
(target in js).value / "scala-2.11"有效,但有硬编码 scala-2.11classes Assets 输出中的目录。

另一个问题是文件现在在 web/public/main/ 下而不是 web/public/main/js .

最佳答案

而不是 (target in js).value / "scala-2.11" ,您可以使用 (crossTarget in js).value .它将附加正确的子目录,具体取决于您的 Scala 版本。
fastOptJS in (js, Compile) 生成的文件的全限定名是 artifactPath in (js, Compile, fastOptJS) ,这是 sbt 的习惯。

您也可以更改 fastOptJS 的目标文件通过修改 artifactPath反而。这可以帮助您解决最后一个问题。该技术可用于将生成的文件直接发送到 jvm 项目的托管资源。

关于playframework - 如何将 JavaScripts 的输出路径从 scala.js 添加到 Play?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25990605/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com