Fork me on GitHub
#boot
<
2017-11-18
>
seancorfield00:11:05

Because the weird things you can do via Boot command line amuse me http://seancorfield.github.io/blog/2017/11/17/boot-localrepo/

borkdude13:11:33

@dominicm I wonder about some of the aspects in that post as well. E.g. what you just said, the watch task should take care of incremental compilation.

borkdude13:11:02

> This is a project that includes three different ClojureScript builds: the web frontend, a web worker that evaluates JS and CLJS, and a renderer that runs on Node to generate the initial payload offline. For each of these we need dev, test, and production builds. At first glance, I would make three boot tasks out of this and would start them in each their own JVM process (or maybe you can do with only one, but I would not compose the tasks).

borkdude13:11:19

As the output of one task should not go into the other one.

borkdude13:11:39

> Further complications arise because of a large number of foreign js dependencies. Not a boot problem.

borkdude13:11:34

> We decided we wanted figwheel Wondering what is missing for them in the boot ecosystem, but this is not a boot specific problem, more an ecosystem problem: figwheel is mainly written with lein in mind.

borkdude13:11:22

> boot-cljs does a lot of “magic” under the covers that ended up getting in our way. Again wondering what this is.

borkdude13:11:48

> you can’t have a REPL and a watcher task in the same process He may be right - we start nREPL from our app on startup.

juhoteperi13:11:38

Repl server can be started together with watch, but no client

juhoteperi13:11:01

(comp (watch) (repl :server true) (cljs) ...)

juhoteperi13:11:25

REPL client is blocking so no futher tasks would run

borkdude13:11:27

@juhoteperi What’s the difference with only (repl)?

borkdude13:11:47

Ah I see, you won’t get the prompt, etc. yes

juhoteperi13:11:48

By default repl starts both server and the client

borkdude13:11:57

Yeah that makes sense, thanks

juhoteperi13:11:21

Once you have repl running, you can start client on other terminal boot repl -c, it will automatically use port in .nrepl-port file, which is written by server task

juhoteperi13:11:46

repl task help does document this quite well

borkdude13:11:55

We start the server in the app anyway, because we like to have it in our staging/prod environment

juhoteperi13:11:19

I only enable app nrepl on test/prod environments, as when using Component/Integrant, restarting the system would also restart nrepl which is inconvenient during dev

borkdude13:11:53

We’re not doing it as part of our system, but before starting the system

borkdude13:11:57

@juhoteperi You could also use https://github.com/weavejester/suspendable to make the nREPL component suspendable