diff --git a/jsdependencies-sbt-plugin/src/main/scala/org/scalajs/jsdependencies/sbtplugin/JSDependenciesPlugin.scala b/jsdependencies-sbt-plugin/src/main/scala/org/scalajs/jsdependencies/sbtplugin/JSDependenciesPlugin.scala index 833f58ba..8a2af54e 100644 --- a/jsdependencies-sbt-plugin/src/main/scala/org/scalajs/jsdependencies/sbtplugin/JSDependenciesPlugin.scala +++ b/jsdependencies-sbt-plugin/src/main/scala/org/scalajs/jsdependencies/sbtplugin/JSDependenciesPlugin.scala @@ -81,8 +81,6 @@ object JSDependenciesPlugin extends AutoPlugin { } - private lazy val memFS = Jimfs.newFileSystem() - import autoImport._ /** Collect certain file types from a classpath. @@ -131,6 +129,7 @@ object JSDependenciesPlugin extends AutoPlugin { import java.util.zip._ val jarPath = jar.getPath + val memFS = Jimfs.newFileSystem() val stream = new ZipInputStream(new BufferedInputStream(new FileInputStream(jar))) @@ -401,12 +400,25 @@ object JSDependenciesPlugin extends AutoPlugin { */ val libs = env match { case _: org.scalajs.jsenv.nodejs.NodeJSEnv => + val memFS = Jimfs.newFileSystem() + val usedNames = mutable.Set.empty[String] + + def getFileNameFor(commonJSName: String): String = { + var name = commonJSName + var suffix = 0 + while (!usedNames.add(name)) { + suffix += 1 + name = s"${commonJSName}_$suffix" + } + s"require-$name.js" + } + for (dep <- deps) yield { dep.info.commonJSName.fold { dep.lib } { commonJSName => val fname = materialize(dep.lib).toASCIIString - Files.write(memFS.getPath(s"require-$fname"), + Files.write(memFS.getPath(getFileNameFor(commonJSName)), s"""$commonJSName = require("${escapeJS(fname)}");""".getBytes(StandardCharsets.UTF_8)) } } diff --git a/sbt-plugin-test/build.sbt b/sbt-plugin-test/build.sbt index 2e03de19..517dd56c 100644 --- a/sbt-plugin-test/build.sbt +++ b/sbt-plugin-test/build.sbt @@ -10,6 +10,7 @@ name := "sbt-plugin-test" addCommandAlias("testAll", ";jsDependenciesTest/packageJSDependencies" + ";jsDependenciesTest/packageMinifiedJSDependencies" + + ";jsDependenciesTest/jsEnvInput" + // #40 ";jsDependenciesTest/regressionTestForIssue2243" + ";jsNoDependenciesTest/regressionTestForIssue2243")