如何将现有的Scala库移植到scalajs?

时间:2015-05-09 17:41:37

标签: scala.js

我是Scala.js的新手。我想使用Argonaut json库。

https://github.com/argonaut-io/argonaut

它唯一的依赖关系似乎是 Monocle和Scalaz都有为Scala.js编译的版本。我很乐意将Argonaut移植到Scala.js,但对如何开始没有坚定的想法。有没有人有任何指示?

感谢。

1 个答案:

答案 0 :(得分:24)

快速概念验证

首先要尝试转换构建,以便JVM项目成为Scala.js项目。这个的基础很简单:

project/plugins.sbt中,将依赖项添加到Scala.js sbt插件:

addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.2")

build.sbtproject/Build.scala(或类似的,取决于给定项目使用的内容),通过添加以下内容将项目转换为Scala.js项目:

.enablePlugins(ScalaJSPlugin)

他们的定义。对于它们的依赖项,请将%%依赖项替换为%%%依赖项,以依赖于Scala.js工件。

此时,代码可以编译,可以用于编写示例或直接在您的应用程序中。复杂的构建可能需要更多的工作。

如果您的应用程序中的一切正常,那么您已经成功地将此库移植到Scala.js上。

更进一步:交叉编译构建

好了,现在您已经快速了解了库可以编译和使用Scala.js的概念,您希望进行正确的交叉编译构建而不是快速的叉子。实际上,现在构建不再产生JVM工件了。

为此,您需要将需要交叉编译的所有项目重新转换为crossProject。为此,我建议cross-building documentation page作为进一步文档的来源。