我正在使用 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/