ScalaJS - кросс-проектная конфигурация SBT для тестирования части `JS`-модуля на JVM
build.sbt
ниже для проекта, где есть 3 модуля:
Shared
-модуль- компилируется в JS-платформу и в JVM-платформу
- видимый для
JVM
модуль, кJS
модуль и к себе
JVM
-модуль- компилируется в JVM-платформу,
- не виден
JS
-модуль, ниShared
-модуль, видимый только для себя
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