ClojureScript for web development - where to start? (AKA Little Printf [1])

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.

  1. At first Clojure used Maven for building.
  2. Maven is boring, people made Leiningen, configuring with maps, and the plugin lein-cljsbuild can build ClojureScript.
  3. Leiningen contains only configurations, no logics. People want to compose tasks, so they made Boot, and provided boot-cljs and boot-reload for ClojureScript.
  4. Webpack is cool with hot module replacement, we got lein-figwheel for that.
  5. 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.
  6. Planck does not support modules from npm, then Lumo was created to make full use of V8 engine.
  7. 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.
  8. in the meantime, offciial cljs compiler is still improving…

The situation today is more history than design.

3 Likes