I'm trying to determine whether I should use shadow.cljs.devtools.api from Shadow CLJS or the cljs.build.api API from ClojureScript, but I'm unable to find a feature comparison between the two. My understanding is that Shadow CLJS offers live reloading while the ClojureScript build API does not. Is that the only major difference, or are there more features I'm missing?
I'd say is kinda depends on what you want to build. Live Reloading is only a very tiny aspect of the whole thing. I wrote shadow-cljs to "fix" all the things that I thought were bad/wrong in the default CLJS build system. The CLJS build parts have come a long way since then, but I still disagree with many of the choices made, or how it all works. So, I'd compare it to maybe emacs vs Cursive. One you can customize to no end, but requires digging deep into nasty details. The other just works out of the box with good defaults and gets out of your way. shadow-cljs is the latter. Opinionated about a lot of defaults, but shipping a full build system that just works out of the box and covers most use cases (all of mine and many others).
Not to mention the npm/JS integration being much more complete in shadow-cljs
That's a good summary, thank you. I've been using Shadow in a custom build system, but I think its strengths - how opinionated and streamlined it is - are causing issues when I try to bend it in ways it was never designed to go. I've been resisting changing course, but I'm at the point where I think I'd benefit more from the relative flexibility of ClojureScript's build API, even if that means having to recreate some of the features that are included by default in Shadow.
yeah, it was always meant as a full tool. it is extensible in many ways but not all 😉