Clojure deps.edn hot-loading project dependencies without a restart

Alembic is fine if you're using Leiningen, but I've been using deps.edn and Clojure's built-in project/dependency management.

deps.edn

{:deps
 {org.clojure/tools.deps.alpha
  {:git/url "https://github.com/clojure/tools.deps.alpha.git"
   :sha "d492e97259c013ba401c5238842cd3445839d020"}}}

user.clj

(ns user
  (:require [clojure.tools.deps.alpha.repl :refer [add-lib]]))

(defn add-project-dep
  ([lib-name lib-version]
   (let [dep-name (symbol lib-name)
         dep-version (name lib-version)]
     (add-lib dep-name {:mvn/version dep-version}))))

(add-project-dep :hiccup "1.0.5")
(require '[hiccup.core :refer [html]])
(html [:div "Hello World"])
;; => "<div>Hello World</div>"
Show Comments