Get Started with ClojureScript with Leiningen Templates
Join the DZone community and get the full member experience.Join For Free
When I was about to get started with ClojureScript, I was discouraged by the fact that I apparently had to figure out so much before getting a trivial project up and running.
Eventually I learned, built and showed a minimal application running with just Leiningen and Ring, and a little bit of jQuery in ClojureScript.
Some time later Kyle Cordes showed me cljs-template. It’s a Leiningen template created by Chris Granger, also known as the guy behind Noir and Light Table. That was quite fun. All you need to get a project up and running is:
lein new cljs-template my-project cd my-project lein run
That’s it, you’re now running a Noir application with ClojureScript in client (jQuery included). You can start hacking at the CLJS source and see changes in browser immediately.
I soon discovered that it was a few months old, using Clojure 1.3, dated build of ClojureScript and pretty much everything. Eventually (thanks to Kyle and Raynes) I got push access to the project and updated everything, so it should be in even better shape now.
I am not sure where cljs-template is going though, with Noir itself going away. I also found one bit missing: That template is awesome to get up and running and show off a demo, but you would still need to do some manual plumbing to make such a project work for a real application (with leiningen hooks on compilation etc.).
That’s why I created another template: cljs-kickoff. Like my first steps, it’s really minimal: just Ring, lein-cljsbuild and ClojureScript. Fewer files, fewer dependencies, very easy to grasp.
To kick it off, just run:
lein new cljs-kickoff my-project cd my-project lein run
It will compile the ClojureScript file included in the project and start Ring server with it.
In another shell, you can run:
lein cljsbuild auto
This will start lein-cljsbuild in the auto-compile mode. Whenever the CLJS source changes, it will be automatically recompiled and the running application will pick it up after reload.
Compared to cljs-template, this template is much smaller and only
uses very basic, popular and mature pieces (just Ring and CLJS). It also
has all the “real” Leiningen hooks in place: CLJS compilation is
lein jar and
I hope it all makes someone’s life easier by making the first step on CLJS path as easy as possible. Happy hacking!
Published at DZone with permission of Konrad Garus, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.