I'm working on a library, for which I would like to expose a single namespace to users. I don't want users (including myself!) to have to remember this function comes from foo-lib, this one comes from foo-lib.utils etc.
Internally, however, I would very much like to split my code up into separate files. This is not just for convenience (although I do find smaller files much more convenient), but has a material impact on my productivity. A single long file takes a few seconds to compile (usually in figwheel). These pauses really add up and make the overall experience feel sluggish. In Clojure this is a non-issue -- a namespace can be split into multiple files using load and in-ns. We don't have those in ClojureScript. I have tried various approaches to breaking my library up into multiple namespaces, while keeping the single namespace API, but none are satisfactory. I can expose symbols just by def-ing them in the main namespace, e.g. (def foo my-utils/foo). This is inconvenient for editing (e.g. go to definition), but the real stumbling block is namespaced keywords, which I use a lot. As users of the library must use the keywords also, I need them to be in the main namespace. This means my utility namespaces (which cannot require the main namespace due to circular dependencies) would have to use the long-hand keyword syntax (i.e. no :: ). This is too high a price and I am back to everything in a single namespace. Is this issue affecting others? My guess is people just impose multiple namespaces on the consumers of libraries, or are stuck with cumbersome, large namespaces. I came across this old thread, which is related. It didn't get very far: https://groups.google.com/forum/#!topic/clojure/MwGV6GDN9p8 Thanks very much Tom P.S. I have seen people mentioning "sub second compiles" in figwheel. I am seeing, e.g. more than 3 seconds to compile a 1,700 file. Does that sound typical? (2012 MacBook Pro) -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojurescript+unsubscr...@googlegroups.com. To post to this group, send email to clojurescript@googlegroups.com. Visit this group at https://groups.google.com/group/clojurescript.