我想创建一个非常简单的Scala.js应用程序,在项目根目录下有三个模块,如下所示:
project
-server
-client
-api
这是一个跨项目,因为我希望api模块中的源代码可以由Scala和Scala.js编译。据我所知,这可能需要两个api模块(共享相同的源代码),jvm类型和js类型。
服务器模块中的源只能由Scala编译,客户端模块中的源只能由Scala.js编译。服务器模块需要依赖于api模块(jvm类型),而客户端模块需要依赖于api模块(js类型)。
有人可以发布最基本的build.sbt,说明如何实现这一目标吗?
编辑:
看起来这是这样做的方法:
lazy val commonSettings = Seq(
scalaVersion := "2.12.1"
)
lazy val projectRoot = project.in(file(".")).
aggregate(client, server).
settings(
name := "projectRoot"
)
lazy val server = project.in(file("server")).
settings(
commonSettings
).
dependsOn(apiJvm)
lazy val client = project.in(file("client")).
settings(
commonSettings
).
enablePlugins(ScalaJSPlugin).
dependsOn(apiJs)
lazy val api = crossProject.in(file(".")).
settings(
commonSettings
).
jvmSettings(
// Add JVM-specific settings here
).
jsSettings(
// Add JS-specific settings here
)
lazy val apiJvm = api.jvm.in(file("apiJVM"))
lazy val apiJs = api.js.in(file("apiJS"))
唯一的问题是共享源进入名为shared的文件夹,在IntelliJ中使用不同的模块名称。遗憾的是它不在api文件夹中,模块名称为api。据推测,我不应该在创建的apiJS和apiJVM模块中添加任何代码?它们只用作依赖项?