Получение артефактов сборки в нужной папке при использовании 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запускается, и мне непонятно, как вернуть старый функционал.

0 ответов

Другие вопросы по тегам