Could you please clarify for me where does all of shadow-cljs, leiningen, lumo (and I see some planck also!) and reagent plus npm stand in relation to each other?
I think I can provide an inaccurate but short version of the relationships among them.
- At first Clojure used Maven for building.
- Maven is boring, people made Leiningen, configuring with maps, and the plugin
lein-cljsbuildcan build ClojureScript. - Leiningen contains only configurations, no logics. People want to compose tasks, so they made Boot, and provided
boot-cljsandboot-reloadfor ClojureScript. - Webpack is cool with hot module replacement, we got
lein-figwheelfor that. - All tools above relies on JVM heavily, in order to run ClojureScript on devices without JVM, like iOS, Planck was created based on self-hosted ClojureScript and JavaScriptCode, which is a ClojureScript runtime.
- Planck does not support modules from npm, then Lumo was created to make full use of V8 engine.
- We still feel the toolchain is too heavy for developers from JavaScript ecosystem, shadow-cljs was refactored to be more friendly, supporting npm modules, relies on JVM but in the background, also with some features from Webpack.
- in the meantime, offciial cljs compiler is still improving…
The situation today is more history than design.