As your project grows and you add more and more dependencies, it can become hard to remember why you have any given dependency. This can lead to you having multiple ways of doing the same task or keeping a library around that you don't actually need anymore.
One way to combat this is with comments.
deps.edn
.Exactly what comments to put is more art than science, but aiming to keep it short and sweet is a decent strategy.
Some things don't deserve a special note, of course. You won't need to later figure out
why org.clojure/clojure
is there.
Some things definitely do. For better or worse, we got some silly names out there.
{:paths ["src"]
:deps {org.clojure/clojure {:mvn/version "1.12.0"}
;; HTTP server
ring/ring {:mvn/version "1.13.0"}
;; Routing
metosin/reitit-ring {:mvn/version "0.5.5"}
;; Logging Facade
org.clojure/tools.logging {:mvn/version "1.3.0"}
;; Logging Implementation
org.slf4j/slf4j-simple {:mvn/version "2.0.16"}
;; HTML Generation
hiccup/hiccup {:mvn/version "2.0.0-RC3"}
;; Database Queries
com.github.seancorfield/next.jdbc {:mvn/version "1.3.955"}
;; Postgres Driver
org.postgresql/postgresql {:mvn/version "42.7.4"}
;; Database Connection Pooling
com.zaxxer/HikariCP {:mvn/version "5.1.0"}
;; Unify Environment Variables + .env Handing
io.github.cdimascio/dotenv-java {:mvn/version "3.0.0"}
;; HTTP Middleware
ring/ring-defaults {:mvn/version "0.5.0"}
;; Background Jobs
msolli/proletarian {:mvn/version "1.0.86-alpha"}
;; JSON Reading and Writing
cheshire/cheshire {:mvn/version "5.13.0"}
;; Dynamic SQL Generation
com.github.seancorfield/honeysql {:mvn/version "2.6.1203"}}
:aliases {:dev {:extra-paths ["dev" "test"]
:extra-deps {nrepl/nrepl {:mvn/version "1.2.0"}
;; Test Runner
lambdaisland/kaocha {:mvn/version "1.91.1392"}}}
:format {:deps {dev.weavejester/cljfmt {:mvn/version "0.13.0"}}}
:lint {:deps {clj-kondo/clj-kondo {:mvn/version "2024.09.27"}}}}}