Suppose that you have a Scala.js project that compiles meaningfully to browser JavaScript, Node.js, and JVM.
Now imagine that in the browser, part of the application runs in the window while another part runs in a web worker.
Can SBT bundle two versions of the source code? One version has a main class for the browser window, while the other has a different main class that runs the web worker code?
If so, how would you configure this?
Please note that the project depends on JavaScript native libraries and webpack.
I'm doing exactly that in one of my projects, but with a
main
-class only for the JVM. The browser loads the transpiled scalajs-code and a small hook method, triggered by a js-file, initializing the core, with different parameters. This does work forWebworker
and Frontend-thread and even for aSharedWorker
This could look like that:
at the frontend it could be a global script import and another initialization routine.
Of course, nothing prevents you to additionally create different subprojects in
sbt
, that all use the same, common library-project and bundle their specific needs for the target platform in a separate project.