@@ -21,54 +21,36 @@ lazy val commonSettings = Seq(
2121)
2222
2323lazy val jsSettings = Seq (
24- webpack / version := " 4.46.0" ,
25- useYarn := true ,
2624 scalaJSLinkerConfig ~= { _.withOptimizer(false ) },
2725 scalaJSLinkerConfig ~= { _.withModuleKind(ModuleKind .CommonJSModule ) },
2826 libraryDependencies += " org.portable-scala" %%% " portable-scala-reflect" % " 1.1.2" ,
27+ externalNpm := {
28+ sys.process.Process (" yarn" , baseDirectory.value).!
29+ baseDirectory.value
30+ },
2931)
3032
31- def readJsDependencies (baseDirectory : File , field : String ): Seq [(String , String )] = {
32- val packageJson = ujson.read(IO .read(new File (s " $baseDirectory/package.json " )))
33- packageJson(field).obj.mapValues(_.str.toString).toSeq
34- }
35-
3633lazy val webapp = project
3734 .enablePlugins(
3835 ScalaJSPlugin ,
39- ScalaJSBundlerPlugin ,
40- ScalablyTypedConverterPlugin ,
36+ ScalablyTypedConverterExternalNpmPlugin ,
4137 )
4238 .dependsOn(api)
4339 .settings(commonSettings, jsSettings)
4440 .settings(
45- libraryDependencies ++= Seq (
41+ libraryDependencies ++= Seq (
4642 " io.github.outwatch" %%% " outwatch" % versions.outwatch,
4743 " io.github.fun-stack" %%% " fun-stack-web" % versions.funStack,
4844 " io.github.fun-stack" %%% " fun-stack-web-tapir" % versions.funStack, // this pulls in scala-java-time, which will drastically increase the javascript bundle size. Remove if not needed.
4945 " com.github.cornerman" %%% " colibri-router" % versions.colibri,
5046 " io.suzaku" %%% " boopickle" % versions.boopickle,
5147 ),
52- Compile / npmDependencies ++= readJsDependencies(baseDirectory.value, " dependencies" ) ++ Seq (
53- " snabbdom" -> " github:outwatch/snabbdom.git#semver:0.7.5" , // for outwatch, workaround for: https://github.com/ScalablyTyped/Converter/issues/293
54- " reconnecting-websocket" -> " 4.1.10" , // for fun-stack websockets, workaround for https://github.com/ScalablyTyped/Converter/issues/293 https://github.com/cornerman/mycelium/blob/6f40aa7018276a3281ce11f7047a6a3b9014bff6/build.sbt#74
55- " jwt-decode" -> " 3.1.2" , // for fun-stack auth, workaround for https://github.com/ScalablyTyped/Converter/issues/293 https://github.com/cornerman/mycelium/blob/6f40aa7018276a3281ce11f7047a6a3b9014bff6/build.sbt#74
56- ),
57- stIgnore ++= List (
48+ stIgnore ++= List (
5849 " reconnecting-websocket" ,
5950 " snabbdom" ,
6051 " jwt-decode" ,
6152 ),
62- Compile / npmDevDependencies ++= readJsDependencies(baseDirectory.value, " devDependencies" ),
63- scalaJSUseMainModuleInitializer := true ,
64- webpackDevServerPort := 12345 ,
65- webpackDevServerExtraArgs := Seq (" --color" ),
66- startWebpackDevServer / version := " 3.11.3" ,
67- fullOptJS / webpackEmitSourceMaps := true ,
68- fastOptJS / webpackEmitSourceMaps := true ,
69- fastOptJS / webpackBundlingMode := BundlingMode .LibraryOnly (),
70- fastOptJS / webpackConfigFile := Some (baseDirectory.value / " webpack.config.dev.js" ),
71- fullOptJS / webpackConfigFile := Some (baseDirectory.value / " webpack.config.prod.js" ),
53+ scalaJSUseMainModuleInitializer := true ,
7254 )
7355
7456// shared project which contains api definitions.
@@ -87,13 +69,12 @@ lazy val api = project
8769lazy val lambda = project
8870 .enablePlugins(
8971 ScalaJSPlugin ,
90- ScalaJSBundlerPlugin ,
91- ScalablyTypedConverterPlugin ,
72+ ScalablyTypedConverterExternalNpmPlugin ,
9273 )
9374 .dependsOn(api)
9475 .settings(commonSettings, jsSettings)
9576 .settings(
96- libraryDependencies ++= Seq (
77+ libraryDependencies ++= Seq (
9778 " io.github.fun-stack" %%% " fun-stack-lambda-ws-event-authorizer" % versions.funStack,
9879 " io.github.fun-stack" %%% " fun-stack-lambda-ws-rpc" % versions.funStack,
9980 " io.github.fun-stack" %%% " fun-stack-lambda-http-rpc" % versions.funStack,
@@ -102,27 +83,14 @@ lazy val lambda = project
10283 " io.suzaku" %%% " boopickle" % versions.boopickle,
10384 " com.lihaoyi" %%% " pprint" % versions.pprint,
10485 ),
105- Compile / npmDependencies ++= readJsDependencies(baseDirectory.value, " dependencies" ),
106- stIgnore ++= List (
86+ stIgnore ++= List (
10787 " aws-sdk" ,
10888 ),
109- Compile / npmDevDependencies ++= readJsDependencies(baseDirectory.value, " devDependencies" ),
110- fullOptJS / webpackEmitSourceMaps := true ,
111- fastOptJS / webpackEmitSourceMaps := true ,
112- fastOptJS / webpackConfigFile := Some (baseDirectory.value / " webpack.config.dev.js" ),
113- fullOptJS / webpackConfigFile := Some (baseDirectory.value / " webpack.config.prod.js" ),
11489 )
11590
116- addCommandAlias(" prod" , " fullOptJS/webpack" )
117- addCommandAlias(" prodf" , " webapp/fullOptJS/webpack" )
118- addCommandAlias(" prodb" , " lambda/fullOptJS/webpack" )
119- addCommandAlias(" dev" , " devInitAll; devWatchAll; devDestroyFrontend" )
120- addCommandAlias(" devf" , " devInitFrontend; devWatchFrontend; devDestroyFrontend" ) // compile only frontend
121- addCommandAlias(" devb" , " devInitBackend; devWatchBackend" ) // compile only backend
122- addCommandAlias(" devInitBackend" , " lambda/fastOptJS/webpack" )
123- addCommandAlias(" devInitFrontend" , " webapp/fastOptJS/startWebpackDevServer; webapp/fastOptJS/webpack" )
124- addCommandAlias(" devInitAll" , " devInitFrontend; devInitBackend" )
125- addCommandAlias(" devWatchFrontend" , " ~; webapp/fastOptJS" )
126- addCommandAlias(" devWatchBackend" , " ~; lambda/fastOptJS" )
127- addCommandAlias(" devWatchAll" , " ~; lambda/fastOptJS; webapp/fastOptJS" )
128- addCommandAlias(" devDestroyFrontend" , " webapp/fastOptJS/stopWebpackDevServer" )
91+ addCommandAlias(" prod" , " fullOptJS" )
92+ addCommandAlias(" prodf" , " webapp/fullOptJS" )
93+ addCommandAlias(" prodb" , " lambda/fullOptJS" )
94+ addCommandAlias(" dev" , " ~; lambda/fastOptJS; webapp/fastOptJS" )
95+ addCommandAlias(" devf" , " ~; webapp/fastOptJS" )
96+ addCommandAlias(" devb" , " ~; lambda/fastOptJS" )
0 commit comments