Получение артефактов сборки в нужной папке при использовании sbt-web-scalajs
У меня есть проект ScalaJS + Play с файлом сборки SBT, и я использую, среди прочего, плагин . Всего в моем проекте 4 подпроекта.build.sbt
. Вот начало этого файла:
import sbt.Keys.libraryDependencies
val myScalaVersion = "2.13.1"
val scalaTestPlusVersion = "5.1.0"
val scalaJsDomVersion = "1.0.0"
val scalaTagsVersion = "0.8.6"
val scalatagsrxVersion = "0.5.0"
val circeVersion = "0.13.0"
val rosHttpVersion = "3.0.0"
val quillVersion = "3.5.2"
val pgDriverVersion = "42.2.5"
val scriptsVersion = "1.1.4"
val apacheCommonsMailV = "1.5"
useJCenter := true
scalaVersion in ThisBuild := myScalaVersion
scalaJSStage in Global := FullOptStage
lazy val backend = (project in file("backend")).settings(commonSettings).settings(
scalaJSProjects := Seq(frontend, sec_frontend),
pipelineStages in Assets := Seq(scalaJSPipeline),
pipelineStages := Seq(gzip),
pipelineStages := Seq(scalaJSProd, gzip),
compile in Compile := ((compile in Compile) dependsOn scalaJSPipeline).value,
scalaJSStage := FullOptStage,
isDevMode in scalaJSPipeline := false,
libraryDependencies ++= Seq(
"com.vmunier" %% "scalajs-scripts" % scriptsVersion,
jdbc,
evolutions,
"org.postgresql" % "postgresql" % pgDriverVersion,
"org.apache.commons" % "commons-email" % apacheCommonsMailV,
"io.getquill" %% "quill-jdbc" % quillVersion,
"io.circe" %% "circe-core" % circeVersion,
"io.circe" %% "circe-generic" % circeVersion,
"io.circe" %% "circe-parser" % circeVersion,
"org.scalatestplus.play" %% "scalatestplus-play" % scalaTestPlusVersion % "test",
guice,
specs2 % Test
)
).enablePlugins(PlayScala)
.dependsOn(sharedJvm)
lazy val frontend = (project in file("frontend")).settings(commonSettings).settings(
scalaJSUseMainModuleInitializer := true,
scalaJSStage := FullOptStage,
libraryDependencies ++= Seq(
"org.scala-js" %%% "scalajs-dom" % scalaJsDomVersion,
"com.lihaoyi" %%% "scalatags" % scalaTagsVersion,
"io.circe" %%% "circe-core" % circeVersion,
"io.circe" %%% "circe-generic" % circeVersion,
"io.circe" %%% "circe-parser" % circeVersion,
"com.github.nondeterministic" %%% "roshttp" % rosHttpVersion,
"com.timushev" %%% "scalatags-rx" % scalatagsrxVersion
),
).enablePlugins(ScalaJSPlugin, ScalaJSWeb)
.dependsOn(sharedJs)
[...]
Когда я создаю и затем запускаю свой проект, у меня есть следующие артефакты, необходимые для выполнения правильно созданного сгенерированного кода JavaScript:
./frontend/target/scala-2.13/frontend-opt.js
./backend/target/web/classes/main/META-INF/resources/webjars/backend/0.15.0-alpha2/frontend-opt.js
./backend/target/web/public/main/frontend-opt.js
Однако проблема возникает, когда я пытаюсь обновить плагин до версии 1.1 или 1.2, поскольку он больше не поддерживает флаг, используемый в моем
backend
подпроект. То есть, если я скомпилирую и запущу свой проект без него, будет создан только один из трех файлов выше:
./frontend/target/scala-2.13/frontend-opt.js
И мой интерфейс ScalaJS/JavaScript впоследствии не загружается. Я просмотрел документациюsbt-web-scalajs
проект, в котором говорится, что теперь все контролируется черезscalaJSStage
, но, похоже, мне не удалось получить необходимые выходные файлы в необходимых каталогах проекта.
Другими словами,isDevMode
по-видимому, делал больше, чем просто контролировал,fastOpt
илиfullOpt
запускается, и мне непонятно, как вернуть старый функционал.