Fetching contributors…
Cannot retrieve contributors at this time
131 lines (73 sloc) 4.24 KB


KLIPSE is both an app and a plugin

The app is live here.

And it looks like this:

KLIPSE screenshot

Basically, KLIPSE is made of 4 rectangles:

  1. Top left rectangle: you insert your cljs code
  2. Top right rectangle: you see the generated javascript code from the cljs code
  3. Bottom left rectangle: you see the evaluation of the cljs code as a clojure object
  4. Bottom right rectangle: you see what you print in your code

By the way, if you go to this KLIPSE with clojure code, you will be able to modify the code in the screenshot and see it in action.

Have fun!

Usage - App

Here is an introductory blog post: KLIPSE: why? what? how? Here are the details of the url parameters and hotkeys

Insert your code in the top left area. Press Ctrl-Enter to evaluate.

Run Locally: figwheel + devcards

rlwrap lein run -m clojure.main scripts/figwheel.clj

For the app, open the browser http://localhost:5014/index-dbg.html

For the plugin, open a test page e.g. http://localhost:5014/js-dbg.html


Read KLIPSE Magic to discover how we made KLIPSE.

Deploy to Production

0. Prepare

Upgrade version in project.clj (and in resources-public/index-dev.html if needed to update Klipse app). Make sure Figwheel is running rlwrap lein run -m clojure.main scripts/figwheel.clj

1. Build


2. Test

2.1 Test the app

Test that dev build works properly =>

Open the browser http://localhost:5014/test.html

2.2 Test the plugin

Production build: http://localhost:5014/plugin-prod.html and http://localhost:5014/plugin-prod-more.html (some of the evaluators are incompatible on the same page)

Dev build: http://localhost:5014/plugin-prod.html?dev=1

3. Deploy to Google Storage

Make sure gsutil is installed.


4. publish the npm package

Upgrade version number in package.json and then:

npm publish

Update clojurescript analysis cache

Analysis cache and macro precompiled files are stored under docs/cache-cljs.

The cache files are generated with lumo.

There are two kind of namespaces:

  1. namespaces bundled in lumo e.g cljs.test, cljs.spec
  2. namepsaces not bundled in lumo e.g., reagent

For #1, you need to add the namespace in scripts/generate-clojure-spec-cache.cljs and run

lumo scripts/generate-clojure-spec-cache.cljs

For #2, you need to:

  1. cd docs/cache-cljs

  2. run lein deps

  3. open lumo with the appropriate cache folder and class path:

export cp=`lein classpath`
lumo -k . -c $cp
  1. inside lumo, you need to require your namespaces, and the cache will be stored under docs/cache-cljs e.g.:
cljs.user=> (require 'clojure.test.check)
  1. commit docs/cache-cljs