ScalaJS - кросс-проектная конфигурация SBT для тестирования части `JS`-модуля на JVM

build.sbt ниже для проекта, где есть 3 модуля:

  1. Shared-модуль
    • компилируется в JS-платформу и в JVM-платформу
    • видимый для JVM модуль, к JS модуль и к себе
  2. JVM-модуль
    • компилируется в JVM-платформу,
    • не виден JS-модуль, ни Shared-модуль, видимый только для себя
  3. JS-модуль
    • компилируется на JS-платформу
    • не виден JVM-модуль, ни Shared-модуль, видимый только для себя

Я хотел бы иметь четвертый модуль TestJSonJVM которая компилируется как на JVM-платформу, так и на JS-платформу и видна только JS-модуль и к себе.

Цель TestJSonJVM-модуль, чтобы извлечь часть JSлогика / код модуля в TestJSonJVM-модуль, позволяющий протестировать извлеченную часть на JVM-платформе (которая обладает лучшими инструментами - (отладка, интеграция с IDE и т. д.), чем JS-платформа для ScalaJS).

Как мне нужно изменить build.sbt файл ниже? Такой, что это становится возможным?

lazy val root = project
  .in(file("."))
  .aggregate(imJS, imJVM)
  .settings(
    scalaVersion := Settings.versions.scala,
    publish := {},
    publishLocal := {}
  )

lazy val im = crossProject
  .in(file("."))
  .settings(
    libraryDependencies ++= Settings.sharedDependencies.value,
    addCompilerPlugin(
      "org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full),
    scalaVersion := Settings.versions.scala,
    name := "im",
    version := "0.1-SNAPSHOT"
  )
  .jvmSettings(
    libraryDependencies ++= Settings.jvmDependencies.value,
    mainClass in Test := Some("app.server.rest.TestHttpServerApp"),
    mainClass in Compile := Some("app.server.rest.TestHttpServerApp")
  )
  .jsSettings(
    mainClass in Compile := Some("app.client.Main"),
    libraryDependencies ++= Settings.scalajsDependencies.value,
    persistLauncher in Compile := true,
    persistLauncher in Test := false,
    jsDependencies += RuntimeDOM,
    scalaJSOptimizerOptions ~= { _.withDisableOptimizer(true) }
    )

lazy val imJVM = im.jvm
lazy val imJS = im.js

persistLauncher in Compile := true

persistLauncher in Test := false

cancelable in Global := true

0 ответов

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