Using Other ClojureScript REPLs

While these days most people are using figwheel and shadow-cljs, CIDER supports other ClojureScript REPLs as well. This section of the user manual is dedicated to them.

Node.js REPL

Make sure node.js is installed and that the node binary is on Emacs’s exec-path.

ClojureScript’s Node.js REPL is really simple to setup, as it doesn’t require you to fiddle with your project’s dependencies. All you need to do is:

  1. Open some file in your project.

  2. Type M-x cider-jack-in-cljs RET.

  3. Choose the node option when prompted about the ClojureScript REPL type you want to use.

Weasel

Using Weasel, you can have a browser-connected REPL.

  1. Add [weasel "0.7.1"] to your project’s :dependencies.

  2. Type M-x cider-jack-in-cljs RET and choose the Weasel option when prompted about the ClojureScript REPL type you want to use.

  3. Add this to your ClojureScript code:

    (ns my.cljs.core
      (:require [weasel.repl :as repl]))
    (repl/connect "ws://localhost:9001")
  4. Once connected you can start evaluating code in the REPL and you’ll see the results in your browser.

    cljs.user> (js/alert "Hello world!")

Provided that a Piggieback-enabled ClojureScript environment is active in your REPL session, code loading and evaluation will work seamlessly regardless of the presence of the cider-nrepl middleware. If the middleware is present then most other features of CIDER will also be enabled (including code completion, documentation lookup, the namespace browser, and macroexpansion).

For more information on Weasel you should consult its documentation.

Boot ClojureScript REPL

boot-cljs is another browser-connected ClojureScript REPL, that’s targeting the Boot build tool. Internally, it’s powered by Weasel. Let’s go over the steps required to use it.

  1. Add this to your dependencies in build.boot:

    [adzerk/boot-cljs        "X.Y.Z"  :scope "test"]
    [adzerk/boot-cljs-repl   "X.Y.Z"  :scope "test"]
    [pandeiro/boot-http      "X.Y.Z"  :scope "test"]
    [weasel                  "0.7.1"  :scope "test"]
    [cider/piggieback "0.5.1"  :scope "test"] ; not needed for cider-jack-in-cljs

    and this at the end of build.boot:

    (require
     '[adzerk.boot-cljs :refer [cljs]]
     '[adzerk.boot-cljs-repl :refer [cljs-repl]]
     '[pandeiro.boot-http :refer [serve]])
    
    (deftask dev []
      (comp (serve)
            (watch)
            (cljs-repl) ; order is important!!
            (cljs)))
  2. Type M-x customize-variable RET cider-boot-parameters and insert dev.

  3. Open a file in your project and type M-x cider-jack-in-cljs.

  4. Connect to the running server with your browser. The address is printed on the terminal, but it’s probably http://localhost:3000.

For more information visit boot-cljs-repl.

nbb (node.js babashka)

CIDER has built-in support for nbb. You can either jack in to an nbb project with M-x clojure-jack-in-cljs.

or start its bundled nREPL server:

$ nbb nrepl-server

and connect to it afterwards using M-x cider-connect-cljs.

See the dedicated page for more details.

Other Self-hosted REPLs

For all other self-hosted REPLs you can follow the instructions here. This will work fine with any well-behaved nREPL implementation, like those of: