scala - 如何使用 resourceGenerators 复制 Scala.js 源映射?

标签 scala sbt scala.js

我正在使用 resourceGenerators sbt 复制 key fastOptJs - 使用时生成的 .js 文件 products , 像这样:

(resourceGenerators in Compile) <+=
        (fastOptJS in Compile in frontend, packageScalaJSLauncher in Compile in frontend, packageJSDependencies in Compile in frontend)
          .map((f1, f2, f3) => {
            Seq(f1.data, f2.data, f3)
          })

在 sbt 中运行以下命令,我可以看到生成文件的路径:
> show frontend/fastOptJS
[info] Attributed(/some/path/frontend/target/scala-2.11/frontend-fastopt.js)
[success] Total time: 0 s, completed Mar 12, 2016 1:59:22 PM

同样,我可以很容易地看到 Scala.js 生成的启动器在哪里结束:
> show frontend/packageScalaJSLauncher
[info] Attributed(/some/path/frontend/target/scala-2.11/frontend-launcher.js)
[success] Total time: 0 s, completed Mar 12, 2016 2:00:10 PM

但是,我找不到可以将我指向 .js.map 位置的任务/ key 。文件。我尝试查看插件源,但找不到。有没有办法做到这一点而不诉诸于在 build.sbt 中创建手动映射? ?

最佳答案

Scala.js 生成的源映射总是具有对应的 .js 文件的名称 + ".map" .所以你可以找到与 f1 相关的那个与 f1.getParentFile / (f1.getName + ".map") .

顺便说一句,没有新版本应该使用 <+= .比较好理解+=应该改用:

resourceGenerators in Compile += Def.task {
  val f1 = (fastOptJS in Compile in frontend).value.data
  val f1SourceMap = f1.getParentFile / (f1.getName + ".map")
  val f2 = (packageScalaJSLauncher in Compile in frontend).value.data
  val f3 = (packageJSDependencies in Compile in frontend).value
  Seq(f1, f1SourceMap, f2, f3)
}

并避免 in Compile在任何地方,您都可以使用 inConfig(Compile) :
inConfig(Compile)(Seq(
  resourceGenerators += Def.task {
    val f1 = (fastOptJS in frontend).value.data
    val f1SourceMap = f1.getParentFile / (f1.getName + ".map")
    val f2 = (packageScalaJSLauncher in frontend).value.data
    val f3 = (packageJSDependencies in frontend).value
    Seq(f1, f1SourceMap, f2, f3)
  }
))

关于scala - 如何使用 resourceGenerators 复制 Scala.js 源映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35958078/

相关文章:

scala - 将Iterable.sliding输出为元组

java - sbt 0.13.17 "Error compiling sbt component ' 编译器接口(interface)”

jquery - 在 scala.js 中实现 jquery-ui

scala.js - ScalaJS 发出 EmberJS 代码?

scala - Spark Job - Scala 对象按 FIFO 顺序读取,如何使其并行?

斯卡拉 `view` : `force` is not a member of `Seq`

scala - 使用用户名和密码打开网址

playframework - sbt:子项目的动态聚合

mysql - 如何在 SBT Scala 项目中使用 MySQL JDBC 驱动程序?

scala - 为 API 包装器实例化 js.Object 的建议方法是什么