11name := " jquery-demo"
22
33inThisBuild(Seq (
4- version := " 2 .0.0" ,
4+ version := " 3 .0.0" ,
55 organization := " io.udash" ,
6- scalaVersion := " 2.12.6" ,
7- crossScalaVersions := Seq (" 2.11.12" , " 2.12.6" ),
6+ ))
7+
8+ val commonSettings = Seq (
9+ scalaVersion := " 2.12.7" ,
10+ crossScalaVersions := Seq (" 2.11.12" , " 2.12.7" ),
811 scalacOptions ++= Seq (
912 " -feature" ,
1013 " -deprecation" ,
@@ -18,27 +21,37 @@ inThisBuild(Seq(
1821 " -Xlint:_" ,
1922 ),
2023 scalacOptions ++= {
21- if (CrossVersion .partialVersion((`jquery-demo` / scalaVersion).value).contains(( 2 , 12 )) ) Seq (
24+ if (scalaBinaryVersion.value == " 2.12 " ) Seq (
2225 " -Ywarn-unused:_,-explicits,-implicits" ,
2326 " -Ybackend-parallelism" , " 4" ,
2427 " -Ycache-plugin-class-loader:last-modified" ,
2528 " -Ycache-macro-class-loader:last-modified"
2629 ) else Seq .empty
2730 },
28- ))
2931
30- val generatedDir = file(" generated" )
32+ libraryDependencies ++= Dependencies .deps.value
33+ )
34+
35+ val generatedGlobalDir = file(" generated/global" )
3136val copyAssets = taskKey[Unit ](" Copies all assets to the target directory." )
32- val `jquery-demo` = project.in(file(" ." )).enablePlugins(ScalaJSPlugin )
37+ val root = project.in(file(" ." ))
38+ .enablePlugins(ScalaJSPlugin )
39+ .settings(commonSettings)
40+
41+ val `jquery-global-demo` = project.in(file(" global-demo" ))
42+ .enablePlugins(ScalaJSPlugin )
3343 .settings(
34- libraryDependencies ++= Dependencies .deps.value,
44+ commonSettings,
45+
3546 jsDependencies ++= Dependencies .jsDeps.value,
3647
48+ sourceDirsSettings(_.getParentFile),
49+
3750 /* move these files out of target/. */
38- Compile / fullOptJS / crossTarget := generatedDir ,
39- Compile / fastOptJS / crossTarget := generatedDir ,
40- Compile / packageJSDependencies / crossTarget := generatedDir ,
41- Compile / packageMinifiedJSDependencies / crossTarget := generatedDir ,
51+ Compile / fullOptJS / crossTarget := generatedGlobalDir ,
52+ Compile / fastOptJS / crossTarget := generatedGlobalDir ,
53+ Compile / packageJSDependencies / crossTarget := generatedGlobalDir ,
54+ Compile / packageMinifiedJSDependencies / crossTarget := generatedGlobalDir ,
4255
4356 Compile / fastOptJS := (Compile / fastOptJS).dependsOn(copyAssets).value,
4457 Compile / fullOptJS := (Compile / fullOptJS).dependsOn(copyAssets).value,
@@ -48,7 +61,7 @@ val `jquery-demo` = project.in(file(".")).enablePlugins(ScalaJSPlugin)
4861 copyAssets := {
4962 IO .copyFile(
5063 sourceDirectory.value / " main/assets/index.html" ,
51- generatedDir / " index.html"
64+ generatedGlobalDir / " index.html"
5265 )
5366 },
5467
@@ -60,4 +73,57 @@ val `jquery-demo` = project.in(file(".")).enablePlugins(ScalaJSPlugin)
6073 (Compile / packageJSDependencies / crossTarget).value / " scripts" / " frontend-deps.js" ,
6174 Compile / packageMinifiedJSDependencies / artifactPath :=
6275 (Compile / packageMinifiedJSDependencies / crossTarget).value / " scripts" / " frontend-deps.js"
63- )
76+ )
77+
78+ val generatedBundlerDir = file(" generated/bundler" )
79+ val compileStatics = taskKey[Unit ](" Compiles all static files." )
80+ val `jquery-bundler-demo` = project.in(file(" bundler-demo" ))
81+ .enablePlugins(ScalaJSBundlerPlugin )
82+ .settings(
83+ commonSettings,
84+
85+ sourceDirsSettings(_.getParentFile),
86+
87+ Compile / scalaJSUseMainModuleInitializer := true ,
88+
89+ copyAssets := {
90+ IO .copyFile(
91+ sourceDirectory.value / " main/assets/index.html" ,
92+ generatedBundlerDir / " index.html"
93+ )
94+ },
95+
96+ compileStatics := {
97+ val sjsFileName = (Compile / fastOptJS).value.data.name.stripSuffix(" .js" )
98+ IO .copyFile(
99+ (Compile / npmUpdate / crossTarget).value / s " $sjsFileName-bundle.js " ,
100+ generatedBundlerDir / " scripts/frontend.js"
101+ )
102+ IO .copyFile(
103+ (Compile / npmUpdate / crossTarget).value / s " $sjsFileName-bundle.js.map " ,
104+ generatedBundlerDir / " scripts/frontend.js.map"
105+ )
106+ },
107+ compileStatics := compileStatics.dependsOn(Compile / fastOptJS / webpack, copyAssets).value,
108+ )
109+
110+ def mkSourceDirs (base : File , scalaBinary : String , conf : String ): Seq [File ] = Seq (
111+ base / " src" / conf / " scala" ,
112+ base / " src" / conf / s " scala- $scalaBinary" ,
113+ base / " src" / conf / " java"
114+ )
115+
116+ def mkResourceDirs (base : File , conf : String ): Seq [File ] = Seq (
117+ base / " src" / conf / " resources"
118+ )
119+
120+ def sourceDirsSettings (baseMapper : File => File ) = Seq (
121+ Compile / unmanagedSourceDirectories ++=
122+ mkSourceDirs(baseMapper(baseDirectory.value), scalaBinaryVersion.value, " main" ),
123+ Compile / unmanagedResourceDirectories ++=
124+ mkResourceDirs(baseMapper(baseDirectory.value), " main" ),
125+ Test / unmanagedSourceDirectories ++=
126+ mkSourceDirs(baseMapper(baseDirectory.value), scalaBinaryVersion.value, " test" ),
127+ Test / unmanagedResourceDirectories ++=
128+ mkResourceDirs(baseMapper(baseDirectory.value), " test" ),
129+ )
0 commit comments