Thanks, Chad.

I have built quite a few toy and production full-stack Clojure web apps 
over the past 6 years or so using leiningen and boot. While both of these 
are great tools with a lot of programmer hours invested in them, I realized 
recently that neither of them are particularly easy to explain to a novice 
Clojure programmer, particularly when you are using them to configure a 
full stack web development environment.

Since I hadn't yet tried doing any web dev with the Clojure CLI tools, this 
seemed like a good test project to get my feet wet. Despite the seemingly 
stripped-down set of options available in deps.edn (just :paths, :deps, and 
:aliases), it turned out that the :aliases feature really provides all you 
need to bootstrap a wide variety of build tasks directly into the clojure 
command.

What I really like best about this approach is that I can now introduce new 
programmers to Clojure using command line conventions that they are likely 
already familiar with coming from many other popular languages like perl, 
python, ruby, or node. So now I can just type:

```
$ clojure
```

and get a REPL. Or I could type:

```
$ clojure script.clj
```

and I'm running a simple single-file Clojure program. If I need something 
more complicated, I can just define an alias for a build task a la carte 
and type:

```
$ clojure -A:my-task
```

Because taking this approach makes Clojure development look almost 
identical to building a program in any of the other languages I mentioned 
(and many more that I didn't), it makes the tooling very "easy" (in the 
Rich sense) for newbies that I need to train in our company. And when I 
want to play power-programmer, I get to have fun just cranking out new 
aliases for adventure and profit!

And hey, if you've read along this far, here's a free alias for you to play 
with or modify to suit your needs:

```
:minify-css {:extra-deps {asset-minifier {:mvn/version "0.2.5"}}
                        :main-opts ["-e" 
"(use,'asset-minifier.core),(minify-css,\"resources/public/css/style.css\",\"resources/public/css/style.min.css\")"]}
```

Have fun and happy hacking!
  Gary

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to