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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions