Leiningen, ClojureScript and Browser REPL
Note to self, make sure ClojureScript is on classpath,
(defn cljs-home [path]
(if-let [home (get (System/getenv) "CLOJURESCRIPT_HOME")]
(str home path)
(throw (Exception. "You must set the $CLOJURESCRIPT_HOME variable!"))))
(defproject foo "1.0.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.3.0"]
[noir "1.2.2-SNAPSHOT"]]
:extra-classpath-dirs ~(map cljs-home ["/lib/*" "/src/clj" "/src/cljs"]))
Compile and move browser repl,
(ns foo (:require [clojure.browser.repl :as repl])) (repl/connect "http://localhost:9000/repl")
mkdir source/resources/public/ cljsc source/resources/foo.cljs > source/resources/public/foo.js mv out/ source/resources/public/
Setup noir to serve browser repl,
(ns foo.core
(:use [noir.core]
[hiccup.core])
(:require [noir.server :as server]
[cljs.repl :as repl]
[cljs.repl.browser :as browser]))
(defpage "/" []
(html
[:html
[:head]
[:body
[:script {:type "text/javascript" :src "out/goog/base.js"}]
[:script {:type "text/javascript" :src "foo.js"}]
[:script {:type "text/javascript"} "goog.require('foo');"]]]))
;;"Type: " :cljs/quit " to quit"
(defn foo-repl []
(repl/repl (browser/repl-env)))
(defn server []
(server/start 8080))
Start server, repl and navigate to http://127.0.0.1:8080/, you should be good to go.
(server) (foo-repl)