在 sbt 中生成 HTML 个文件
Generate HTML files in sbt
我有一个带有 index.html
文件的 Scala.js 项目。目前我使用类似 Scala.js example 的结构,fullOptJS
和 fastOptJS
构建有两个不同的 index.html
文件。但是我想以某种方式擦干它。
我认为应该可以使用一个简单的 Scala 代码替换可变部分,从一个公共源模板生成 index.html
和 index-fastopt.html
。也许可以使用 Generating sources and resources 来实现这一点,但我不确定如何实现。
我检查了 scala.js 示例项目并对其进行了一些修改。
首先,编辑 index.html
并替换以下行:
<script type="text/javascript" src="./target/scala-2.11/example-opt.js"></script>
<script type="text/javascript" src="./target/scala-2.11/example-launcher.js"></script>
与:
<script type="text/javascript" src="{{example.js}}"></script>
<script type="text/javascript" src="example-launcher.js"></script>
接下来,在build.sbt中添加以下行:
def generateIndexTask(suffix: String) = Def.task {
val source = baseDirectory.value / "index.html"
val target = (crossTarget in Compile).value / "index.html"
val log = streams.value.log
IO.writeLines(target,
IO.readLines(source).map {
line => line.replace("{{example.js}}", s"example-$suffix.js")
}
)
log.info(s"generate with suffix: $suffix")
}
(fastOptJS in Compile) <<= (fastOptJS in Compile).dependsOn(generateIndexTask("fastopt"))
(fullOptJS in Compile) <<= (fullOptJS in Compile).dependsOn(generateIndexTask("opt"))
生成的index.html将作为生成的.js文件位于示例位置:./target/scala-2.11
您可能应该根据自己的需要调整文件路径。
对于我自己的项目,我在顶层使用另一个结构和一个 sbt-web 项目来管理子项目中的所有资产和 scala-js 代码,该子项目将其代码导出为 webjar。更灵活。
我有一个带有 index.html
文件的 Scala.js 项目。目前我使用类似 Scala.js example 的结构,fullOptJS
和 fastOptJS
构建有两个不同的 index.html
文件。但是我想以某种方式擦干它。
我认为应该可以使用一个简单的 Scala 代码替换可变部分,从一个公共源模板生成 index.html
和 index-fastopt.html
。也许可以使用 Generating sources and resources 来实现这一点,但我不确定如何实现。
我检查了 scala.js 示例项目并对其进行了一些修改。
首先,编辑 index.html
并替换以下行:
<script type="text/javascript" src="./target/scala-2.11/example-opt.js"></script>
<script type="text/javascript" src="./target/scala-2.11/example-launcher.js"></script>
与:
<script type="text/javascript" src="{{example.js}}"></script>
<script type="text/javascript" src="example-launcher.js"></script>
接下来,在build.sbt中添加以下行:
def generateIndexTask(suffix: String) = Def.task {
val source = baseDirectory.value / "index.html"
val target = (crossTarget in Compile).value / "index.html"
val log = streams.value.log
IO.writeLines(target,
IO.readLines(source).map {
line => line.replace("{{example.js}}", s"example-$suffix.js")
}
)
log.info(s"generate with suffix: $suffix")
}
(fastOptJS in Compile) <<= (fastOptJS in Compile).dependsOn(generateIndexTask("fastopt"))
(fullOptJS in Compile) <<= (fullOptJS in Compile).dependsOn(generateIndexTask("opt"))
生成的index.html将作为生成的.js文件位于示例位置:./target/scala-2.11
您可能应该根据自己的需要调整文件路径。
对于我自己的项目,我在顶层使用另一个结构和一个 sbt-web 项目来管理子项目中的所有资产和 scala-js 代码,该子项目将其代码导出为 webjar。更灵活。