From the beginning, I’d been able to reload some functions and even add dependencies from the REPL with e.g. (load-file "build.boot")
. This bit worked fine!
It’s been demotivating to compose every other bit of build tooling from scratch without ever moving on to actually making things.
boot watch ... reload cljs
from the command line takes 30 seconds to start. If I want to change anything about the task, that’s a restart.
Instead, I spent a while getting watch
+ cljs
to work in the REPL. After lots of fiddling with future
s, I found out that it still takes 20 seconds to restart (boot (watch) ... (cljs))
- boot deliberately doesn’t cache things between tasks. Brilliant.
Other tooling - Reloading both frontend & backend code on save. Trying out component
and similar. Connecting to an editor - twice, or entering commands to toggle CLJS. Setting up cider
autocomplete - fiddly with CLJ+CLJS, extra 15-20 sec startup. Rewriting build.boot
/user.clj
to use lazy require/resolve to get to a REPL faster. Badly missing static typing with every single line and mistake.
(And again with shadow-cljs, and again with lein, and it looks like clj
is even more minimal)