I have been using Clojure, ClojureScript, lein, shadow-cljs, re-frame, reagent, Emacs, and CIDER to work on a Clojure/ClojureScript dynamic web app project.
Currently, dependencies are being declared on project.clj
, on shadow-cljs.edn
, and on deps.edn
.
0 - I would like to ditch deps.edn
1 - I would like to avoid Boot and optimize for lein
2 - I would like to avoid duplication of dependency declaration.
Ideally, I would like to have the dependencies all declared just in one file, maybe with a pointer in the other! If not possible in just one file, use two - without deps.edn
.
(i) - Dependencies on project.clj
:
:dependencies
[[org.clojure/clojure "1.11.1"]
[org.clojure/tools.logging "1.2.4"]
[org.clojure/clojurescript "1.11.60"]
[reagent "0.10.0"]
[re-frame "0.12.0"]
[garden "1.3.10"]
[metosin/malli "0.8.4"]
[metasoarous/oz "1.6.0-alpha35"]
[hiccup "1.0.5"]] ; html parsing and manipulation
(ii) - Dependencies on shadow-cljs.edn
:
:dependencies
[[reagent "1.1.0"]
[re-frame "1.2.0"]
[day8.re-frame/tracing "0.6.2"]
[garden "1.3.10"]
[metosin/malli "0.8.3"]
[binaryage/devtools "1.0.3"]
[day8.re-frame/re-frame-10x "1.1.11"]]
(iii) - Dependencies on deps.edn
:
{:deps
{org.clojure/clojure {:mvn/version "1.10.3"},
reagent {:mvn/version "0.10.0"},
org.clojure/tools.logging {:mvn/version "1.1.0"},
org.clojure/clojurescript {:mvn/version "1.10.866"},
ring {:mvn/version "1.9.0"},
garden {:mvn/version "1.3.10"},
metosin/malli {:mvn/version "0.5.1"},
hiccup {:mvn/version "1.0.5"},
metasoarous/oz {:mvn/version "1.6.0-alpha35"},
re-frame {:mvn/version "0.12.0"}}
:source-paths ["src" "test"]}
How would you do it?