如何使用客户端,服务器和api模块创建一个简单的scala.js交叉项目?

时间:2017-03-11 12:07:49

标签: intellij-idea scala.js

我想创建一个非常简单的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模块中添加任何代码?它们只用作依赖项?

0 个答案:

没有答案