Skip to content

mbuczko/revolt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Clojars Project

Introduction

TL;DR: revolt is a plugins/tasks oriented library which makes it easier to integrate beloved dev tools like nrepl, rebel readline or clojurescript into application, based on Cognitect's command line tools.

To see it in action look at revolt-edge example.

Clojure projects historically leverage the power of two glorious build tools: leiningen and boot. Both battle-tested, feature rich alternatives allow to choose either declarative (leiningen) or fully programmable way to manage with tons of dependencies, dev / prod builds and whole bunch of tasks crucial for clojure developer.

The choice was relatively easy. Up util recent.

One day, according to their tradition, Cognitect surprisingly announced a new player on the stage - a command line tools for running Clojure programs (Deps and CLI Guide). It was not only about a new tool, the most significant improvement presented to community was entirely new way of working with dependencies. Things like multi-module project with separate dependencies and dependencies stright from git repo became possible just right out of the box.

Despite of this awesomeness people started wondering how to join all these toys together. Drop well known lein/boot and go along with Cognitect's way or to use new deps for application-specific dependencies and still leverage boot/lein tools for development only? Or maybe ignore new kid on the block and stick with bullet-proof tools we used for ages?

One of most interesting moves within this area was JUXT's edge and their attempt to build a simple but complete Clojure project based on the newest and most experimental things found around. Yeah, including Cognitect's new dependencies.

Revolt is inspired by JUXT's edge and, at its core, tries to simplify attaching all these shiny tools to the project by gathering them in form of tasks and plugins. And yes, it depends on Cognitect's dependencies underneath and makes heavy use of newly introduced aliases by the way.

Doesn't it sound like a Lisp Curse again? :)

What's in the box?

A couple of plugins you may really like:

  • Rebel REPL to give you best REPL experience
  • Figwheel must-have for web development
  • nREPL obviously to let you use Emacs and Cider
  • Filesystem watcher able to watch and react on files changes

and a few built-in tasks:

  • scss - transforms scss files into css
  • cljs - a cljs compiler
  • aot - ahead-of-time compilation
  • jar - jar packager
  • test - clojure.test runner based on Metosin's bat-test
  • info - project info (name, description, package, version, git branch, sha...)
  • assets - static assets fingerprinting
  • capsule - capsule packaging
  • codox - API documentation with codox

External tasks planned:

  • migrations - flyway based database migrations
  • catapulte - jar files installer/deployer
  • lint - linter based on eastwood
  • analyse - static code analyzer based on kibit
  • ancient - looking for outdated dependencies

Plugins