Pat*_*zna 6 scala sbt scala.js
我在使用时使用resourceGeneratorssbt键来复制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)
})
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
同样,我可以很容易地看到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
Run Code Online (Sandbox Code Playgroud)
但是,我无法找到指向.js.map文件位置的任务/密钥.我试着查看插件来源,但找不到它.有没有办法在不诉诸创建手动映射的情况下做到这一点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)
}
Run Code Online (Sandbox Code Playgroud)
并避免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)
}
))
Run Code Online (Sandbox Code Playgroud)