sem*_*tic 4 sbt playframework scala.js
我正在尝试玩(完全是 sbt-web)以访问从 scala.js 创建的 javascript 文件。
有了unmanagedResourceDirectories in Assets +=我能为SBT-网的paht设置为自动复制到正确的资产目录。问题是我不会硬编码 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)
}
Run Code Online (Sandbox Code Playgroud)
有没有办法从 scala.js 获取 javascript 的输出路径?
(target in js).value / "scala-2.11"有效,但资产输出中有硬编码scala-2.11和classes目录。
另一个问题是文件现在位于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 项目的托管资源。
| 归档时间: |
|
| 查看次数: |
1413 次 |
| 最近记录: |