Liking cljdoc? Tell your friends :D

Depo ‼WIP‼

cljdoc badge Clojars Project

A simple CLI tool to easily managage dependencies for Clojure projects. Supports deps.edn, Leiningen, Shadow-cljs and Babashka project configurations. It uses rewrite-clj and zprint under the hood to rewrite your configuration files.

Why

The simplest way to add a dependency to a Clojure project is to first find the artifact coordinates. Then, depending on whether you use Leiningen or you need the Maven artifact coordinates, you look for that and add it to your configuration. There are a few tools to help ease this flow.

For one, there is clj -X:deps find-versions, which downloads a bunch of jars on first start up and returns a bunch of versions. Some other tools include depot (the similar naming is coincidental), ancient-clj and neil, which also has other features, like adding common aliases.

While all of these tools have their own merits, they have their own drawbacks too, such as being slow to start up (all JVM based CLIs, including Depo for now), or only supporting edn configuration files, or not having a CLI at all.

Depo aims to cover these bases.

NOTE

Depo is still a work in progress. See the roadmap

Usage

Depo CLI

To try Depo out, you can use this one liner:

clojure -Sdeps '{:deps {org.clojars.some/depo {:mvn/version "RELEASE"}}}' -M -m depo.core --help

Alternatively, you can add the following to your aliases:

{:depo {:extra-deps {org.clojars.some/depo {:mvn/version "RELEASE"}}
        :main-opts [ "-m" "depo.core"]}

Now you can run clojure -M:depo --help.

Depo Library

You can also use Depo as a library.

Example
(ns example
  (:require [depo.resolver :as r]))

(r/get-release-version "reagent") ;=> "1.2.0"
(r/conform-version "org.clojure/clojure") ;=> {:groupID "org.clojure", :artifactID "clojure", :version "1.5.0-alpha3"}
(r/version-exists? "org.clojure/clojure" "0.20.7") ;=> false

For more information, see the API documentation.

Features / Commands

To see a list of commands, run depo --help.

Global Flags

There are flags that you can set if you'd like to override the default behavior of the commands.

  • --file/-f - Use a different config file instead of the default file Depo finds.

Add

Looks for a config file in your current working directory in the following order:

  1. deps.edn
  2. project.clj
  3. shadow-cljs.edn
  4. bb.edn

It then writes the dependency into the first config file that it finds.

Usage

# simple usage
depo add org.clojure/clojure

# If the groupID and artifactID are the same, you can ommit the groupID
depo add reagent

# Use specific version
depo add reagent@1.11.0

# Use a different config file instead of default
depo -f bb.edn add metosin/malli

© 2023 Somē Cho

Can you improve this documentation?Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close