Я проверил проект примера 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 должно быть разным для быстрого/полного Opt. – Suma
Для этого просто замените в целевом значении: '' index.html "' с 's" index- $ suffix.html "'. Для моего личного вкуса я предпочитаю всегда загружать один и тот же файл и позволять системе сборки обрабатывать правильное поколение. –