This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2019-09-08
Channels
- # announcements (1)
- # beginners (21)
- # calva (27)
- # cljs-dev (25)
- # clojure (40)
- # clojure-europe (5)
- # clojure-italy (1)
- # clojure-uk (5)
- # clojurescript (9)
- # clojureverse-ops (1)
- # clojutre (1)
- # cursive (15)
- # datomic (9)
- # emacs (28)
- # fulcro (3)
- # jackdaw (5)
- # joker (3)
- # pedestal (1)
- # protorepl (6)
- # shadow-cljs (1)
- # spacemacs (3)
- # sql (1)
- # tools-deps (6)
- # vim (6)
- # yada (1)
yeah, make sense. thanks very much! @seancorfield
I’m adding code to Cursive to cache project dependency resolution, and also classpaths for things like running REPLs. Here’s what I’m hashing to create a cache key:
1. Global config (whether using CLI or t.d.a directly, and identifying properties like install path & version in each case), and user and system (if applicable) deps.edn
files.
2. Hash of all non-whitespace non-comment content from project deps.edn
, and all transitive deps.edn
s reachable via :local/root
.
3. Aliases in use, depending on operation.
In the case of the execution classpath, I’ll also add in details from the execution, e.g. main namespace, env vars etc, basically all the info from the run configuration.
What about the user-level deps.edn
which may include aliases/extra-deps/override-deps?
At World Singles Networks, we use CLJ_CONFIG
to set the "user-level" to be our repo-wide deps.edn
and then each subproject has a deps.edn
file. Those two combined then form the set of deps and aliases etc for each given subproject. We use the repo-wide ("user-level") deps.edn
file to "pin" versions by having a :defaults
alias with all our :override-deps
in.