【问题标题】:How do I cross-compile a sbt top-level project with Scalajs 0.6 and 1.0.0?如何使用 Scalajs 0.6 和 1.0.0 交叉编译 sbt 顶级项目?
【发布时间】:2019-11-28 14:54:31
【问题描述】:

我想交叉编译一个 ScalaJS 外观。这个门面是一个顶级的 sbt 项目。但是当我编译时,ScalaJS 1.0.0-M8 出现以下错误:

Option not understood: sjsDefinedByDefault

这是一个最小的复制 (https://github.com/fdietze/scala-js-d3v4/tree/sjsDefinedByDefault):

build.sbt:

name := "scala-js-d3v4"
version := "master-SNAPSHOT"
scalaVersion := "2.12.8"

enablePlugins(ScalaJSPlugin)
scalacOptions += "-P:scalajs:sjsDefinedByDefault"

plugins.sbt:

val scalaJSVersion = Option(System.getenv("SCALAJS_VERSION")).getOrElse("0.6.28")
addSbtPlugin("org.scala-js" % "sbt-scalajs" % scalaJSVersion)

使用0.6.28 构建有效,而1.0.0-M8 失败:

Option not understood: sjsDefinedByDefault

特拉维斯构建:https://travis-ci.org/fdietze/scala-js-d3v4/builds/560544812

scalajs-projects 必须是子项目才能将选项仅作为 scalajs 设置应用吗?那么为什么它与0.6.28 一起工作呢?

供参考:https://www.reddit.com/r/scala/comments/786gco/error_bad_option_pscalajssjsdefinedbydefault/

【问题讨论】:

    标签: scala sbt scala.js


    【解决方案1】:

    正如the release notes of Scala.js 1.0.0-M8末尾的解释,你需要使用以下设置:

    scalacOptions ++= {
      if (scalaJSVersion.startsWith("0.6.")) Seq("-P:scalajs:sjsDefinedByDefault")
      else Nil
    }
    

    【讨论】:

    • 哎哟。我在发行说明中忽略了这一点。非常感谢您的回答!
    猜你喜欢
    • 2017-04-17
    • 2014-10-25
    • 2019-07-13
    • 2020-04-11
    • 2015-03-28
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    相关资源
    最近更新 更多