diff --git a/.gitignore b/.gitignore index e57e34143..94fb96bff 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,6 @@ project/boot/ .history .cache +# Ignroe symlinks +app/nodejs-v10/src/main +app/nodejs-v12/src/main diff --git a/build.sbt b/build.sbt index bd0539519..cdb72729e 100644 --- a/build.sbt +++ b/build.sbt @@ -19,60 +19,31 @@ lazy val core = (project in file("./core")) libraryDependencies ++= Dependencies.core.value ) -lazy val nodejs_v14 = (project in file("./app/nodejs-v14")) - .enablePlugins(ScalaJSPlugin) - .settings(MySettings.commonSettings) - .settings(MySettings.commonScalaJsSettings) - .settings(MySettings.commonMacroParadiseSetting) - .settings(MySettings.publishingSettings) - .settings( - scalacOptions ++= Seq( - "-Xmacro-settings:nodeJs14.3.0" - ), - name := "scala-js-nodejs-v14", - description := "NodeJS v14 API for Scala.js", - libraryDependencies ++= Dependencies.app.value - ) - .dependsOn(core) +lazy val nodejs_v14 = createNodeVersionSpecificProject("14.3.0") +lazy val nodejs_v12 = createNodeVersionSpecificProject("12.16.3") +lazy val nodejs_v10 = createNodeVersionSpecificProject("10.20.1") -lazy val nodejs_v12 = (project in file("./app/nodejs-v12")) - .enablePlugins(ScalaJSPlugin) - .settings(MySettings.commonSettings) - .settings(MySettings.commonScalaJsSettings) - .settings(MySettings.commonMacroParadiseSetting) - .settings(MySettings.publishingSettings) - .settings( - unmanagedSourceDirectories in Compile ++= { - val symlinkDir = baseDirectory.value / "src" / "main" - val hasSymlink = symlinkDir.exists && symlinkDir.isDirectory - Seq((baseDirectory in nodejs_v14).value / "src" / "main" / "scala").filter(_ => !hasSymlink) - }, - scalacOptions ++= Seq( - "-Xmacro-settings:nodeJs12.16.3" - ), - name := "scala-js-nodejs-v12", - description := "NodeJS v12 API for Scala.js", - libraryDependencies ++= Dependencies.app.value - ) - .dependsOn(core) - -lazy val nodejs_v10 = (project in file("./app/nodejs-v10")) - .enablePlugins(ScalaJSPlugin) - .settings(MySettings.commonSettings) - .settings(MySettings.commonScalaJsSettings) - .settings(MySettings.commonMacroParadiseSetting) - .settings(MySettings.publishingSettings) - .settings( - unmanagedSourceDirectories in Compile ++= { - val symlinkDir = baseDirectory.value / "src" / "main" - val hasSymlink = symlinkDir.exists && symlinkDir.isDirectory - Seq((baseDirectory in nodejs_v14).value / "src" / "main" / "scala").filter(_ => !hasSymlink) - }, - scalacOptions ++= Seq( - "-Xmacro-settings:nodeJs10.20.1" - ), - name := "scala-js-nodejs-v10", - description := "NodeJS v10 API for Scala.js", - libraryDependencies ++= Dependencies.app.value - ) - .dependsOn(core) +def createNodeVersionSpecificProject(nodeFullVersion: String) = { + val majorVersion = nodeFullVersion.split("\\.")(0) + sbt + .Project(id = s"nodejs_v${majorVersion}", base = file(s"./app/nodejs-v${majorVersion}")) + .enablePlugins(ScalaJSPlugin) + .settings(MySettings.commonSettings) + .settings(MySettings.commonScalaJsSettings) + .settings(MySettings.commonMacroParadiseSetting) + .settings(MySettings.publishingSettings) + .settings( + unmanagedSourceDirectories in Compile ++= { + val symlinkDir = baseDirectory.value / "src" / "main" + val hasSymlink = symlinkDir.exists && symlinkDir.isDirectory + Seq(file("app") / "nodejs-v14" / "src" / "main" / "scala").filter(_ => majorVersion != "14" && !hasSymlink) + }, + scalacOptions ++= Seq( + s"-Xmacro-settings:nodeJs${nodeFullVersion}" + ), + name := s"scala-js-nodejs-v${majorVersion}", + description := s"NodeJS v${majorVersion} API for Scala.js", + libraryDependencies ++= Dependencies.app.value + ) + .dependsOn(core) +}