Fork me on GitHub
#boot
<
2018-03-26
>
dpsutton02:03:42

anyone know why boot would crank a project up into clojure 1.8 even though i have a dependency on [org.clojure/clojure "1.9.0"]

lwhorton02:03:10

i’m not sure I understand what this means

dpsutton02:03:22

apparently you ave to specify in the global boot properties file. that seems strange

Garrett Hopper03:03:31

@vikeri I ended up only having to do a CloudFront invalidation for my index.html file which reference each split (or perhaps a single js bundle for you) with an included hash in the filename. I had to manually generate these hashes though. Interestingly the cljs compiler already allows for cache busting for source maps (https://clojurescript.org/reference/compiler-options#source-map-timestamp). I wonder if it's a useful enough feature to add for actual code bundles.

Garrett Hopper03:03:09

@dpsutton See https://github.com/boot-clj/boot/wiki/Configuring-Boot I have a boot.properties file in each of my projects right next to build.boot

BOOT_CLOJURE_NAME=org.clojure/clojure
BOOT_CLOJURE_VERSION=1.9.0
BOOT_VERSION=2.7.2
(It's essentially just the output of boot -V, so boot -V > boot.properties would give you a default.) Boot needs the clojure version from the environment variable before it even boots up, because it can't parse the clojure version from the build file. The clojure version is really just there for other projects which may depend on this project. (Please someone, correct me if I'm wrong.)

dpsutton03:03:22

ahh. ok. didn't realize it was a custom environment file for each project. thought build.boot handled it. thanks!

Garrett Hopper03:03:25

@lwhorton boot-cljs by default builds all .cljs.edn files on the classpath. They're typically in the resources folder specified by (set-env! :resource-paths #{"resources"}) (they could also technically be in the source directory). If a .cljs.edn file doesn't exists, one is generated which will compile everything. It can be a little tricky sometimes, because if :ids is supplied the name of a .cljs.edn file which doesn't exist, it won't throw an error; it will simply generate one with that name, if I remember correctly. It's probably best to create a main.cljs.edn file in your resource folder and supply adzerk.boot-cljs/cljs with :ids #{"main"}.

Garrett Hopper03:03:16

@dpsutton Yeah, it isn't very clear without reading through the wiki. There's a lot of good stuff in there, I highly recommend reading through applicable part of the wiki: https://github.com/boot-clj/boot/wiki, if you plan on using it extensively.

borkdude14:03:46

What’s the current state of figwheel + boot?

richiardiandrea15:03:44

@borkdude there is figreload which works fine with figwheel 0.5.14 :)

richiardiandrea15:03:58

No REPL integration at the moment though

borkdude15:03:47

Wasn’t there some effort in figwheel itself to make it less coupled with the lein task or something?

richiardiandrea15:03:43

Yes there was, but there is still a fundamental problem which is that in boot REPL and reload and compiler run in different pods

richiardiandrea15:03:02

So I don't know if we'll ever gonna have feature parity

borkdude15:03:21

What is the disadvantage of not having the REPL integration and using the other REPL?

richiardiandrea15:03:25

The repl state is not synced with app

richiardiandrea15:03:09

You can still use the reload approach no problem

richiardiandrea15:03:38

Modifying sources and seeing the HUD + things reloading

borkdude15:03:58

What is the advantage of boot figreload over normal boot reload?

richiardiandrea15:03:54

The figwheel HUD is better at visualizing things (the last time I have seen it)

richiardiandrea16:03:14

Nothing else server side...they work the same

richiardiandrea16:03:42

I actually reused Juho code for the reloading and just transform data to the figwheel Websocket messages

borkdude16:03:59

I am using expound for getting better error messages, but they end up in the console. Would be nice to get that in the HUD

richiardiandrea16:03:38

Uhm, never tried that probably due to the fact that are printed to the out stream ...not sure...does it happen with both the "reload" tasks?

borkdude16:03:41

Oh this is just something that would be nice. I have no idea if figwheel does anything nice for this

borkdude16:03:58

Haven’t used figwheel in ages, which is a shame, because it seems to get some enhancements lately

borkdude16:03:51

How does tools.deps compare to boot in terms of programmability? I wonder.

richiardiandrea16:03:59

@borkdude deps tools is a dep resolution thing, no pipelines, no programmability apart from the resolution library.

richiardiandrea16:03:40

Sorry wrote pipelines twice :)

richiardiandrea16:03:53

So like that word ah ah

borkdude16:03:42

This seems ok to me: https://github.com/juxt/edge/tree/master/app No pipelining, but then again, I don’t need it that much I guess

dominicm16:03:46

Totally stamping on boot's thunder here but: - feel free to PR krei with unlimited dependencies until it does what you need - I'm trying really hard to figure out what krei should look like, pipelining doesn't directly make sense because of other things, if you have a compelling case for pipelining, let me know, or open an issue RFC.

dominicm16:03:39

I'm interested in dependencies, if not pipelining.

richiardiandrea16:03:10

Yep but what I mean is that you need to roll your own build scripts and if the app is complex then boot can still be an option