Skip to content

Ordering of jsConfigure call breaks CrossType configuration #107

@liff

Description

@liff

Depending on whether .jsConfigure call is placed before or after .settings, the cross type/directory configuration changes.

Repository with a reproduction set up here.

Versions:

  • sbt = 1.2.8
  • sbt-crossproject = 0.6.0
  • sbt-scalajs-crossproject = 0.6.0
  • sbt-scalajs = 0.6.26

Given this build.sbt:

import sbtcrossproject.CrossPlugin.autoImport.{CrossType, crossProject}


val good = crossProject(JVMPlatform, JSPlatform)
  .crossType(CrossType.Pure)
  .settings(scalaVersion := "2.12.8")
  .jsConfigure(identity)

val bad = crossProject(JVMPlatform, JSPlatform)
  .crossType(CrossType.Pure)
  .jsConfigure(identity)
  .settings(scalaVersion := "2.12.8")

Results in correct sourceDirectories for the project where .jsConfigure is after .settings:

$ sbt 'show goodJVM/sourceDirectories' 'show goodJS/sourceDirectories'
...
[info] * /tmp/sbt-crossproject-jsConfigure-issue/good/.jvm/src/main/scala-2.12
[info] * /tmp/sbt-crossproject-jsConfigure-issue/good/.jvm/src/main/scala
[info] * /tmp/sbt-crossproject-jsConfigure-issue/good/.jvm/src/main/java
[info] * /tmp/sbt-crossproject-jsConfigure-issue/good/src/main/scala-2.12
[info] * /tmp/sbt-crossproject-jsConfigure-issue/good/src/main/scala
[info] * /tmp/sbt-crossproject-jsConfigure-issue/good/.jvm/target/scala-2.12/src_managed/main
[info] * /tmp/sbt-crossproject-jsConfigure-issue/good/.js/src/main/scala-2.12
[info] * /tmp/sbt-crossproject-jsConfigure-issue/good/.js/src/main/scala
[info] * /tmp/sbt-crossproject-jsConfigure-issue/good/.js/src/main/java
[info] * /tmp/sbt-crossproject-jsConfigure-issue/good/src/main/scala-2.12
[info] * /tmp/sbt-crossproject-jsConfigure-issue/good/src/main/scala
[info] * /tmp/sbt-crossproject-jsConfigure-issue/good/.js/target/scala-2.12/src_managed/main

And bad sourceDirectories where .jsConfigure is before .settings (looks like CrossType.Full configuration?):

$ sbt 'show badJVM/sourceDirectories' 'show badJS/sourceDirectories'
...
[info] * /tmp/sbt-crossproject-jsConfigure-issue/bad/jvm/src/main/scala-2.12
[info] * /tmp/sbt-crossproject-jsConfigure-issue/bad/jvm/src/main/scala
[info] * /tmp/sbt-crossproject-jsConfigure-issue/bad/jvm/src/main/java
[info] * /tmp/sbt-crossproject-jsConfigure-issue/bad/shared/src/main/scala-2.12
[info] * /tmp/sbt-crossproject-jsConfigure-issue/bad/shared/src/main/scala
[info] * /tmp/sbt-crossproject-jsConfigure-issue/bad/jvm/target/scala-2.12/src_managed/main
[info] * /tmp/sbt-crossproject-jsConfigure-issue/bad/js/src/main/scala-2.12
[info] * /tmp/sbt-crossproject-jsConfigure-issue/bad/js/src/main/scala
[info] * /tmp/sbt-crossproject-jsConfigure-issue/bad/js/src/main/java
[info] * /tmp/sbt-crossproject-jsConfigure-issue/bad/shared/src/main/scala-2.12
[info] * /tmp/sbt-crossproject-jsConfigure-issue/bad/shared/src/main/scala
[info] * /tmp/sbt-crossproject-jsConfigure-issue/bad/js/target/scala-2.12/src_managed/main

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions