Tricks to make Clojure(startup time) faster?

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 futures, 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)