blob: 9c6cb68a9e008c63f782bb45732a135edb83b1c2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
(ns user) ; Must be ".clj" file, Clojure doesn't auto-load user.cljc
; lazy load dev stuff - for faster REPL startup and cleaner dev classpath
(def start-electric-server! (delay @(requiring-resolve 'hyperfiddle.electric-jetty-server/start-server!)))
(def shadow-start! (delay @(requiring-resolve 'shadow.cljs.devtools.server/start!)))
(def shadow-watch (delay @(requiring-resolve 'shadow.cljs.devtools.api/watch)))
(def electric-server-config
{:host "0.0.0.0", :port 8080, :resources-path "public"})
(defn main [& args]
(println "Starting Electric compiler and server...")
(@shadow-start!) ; serves index.html as well
(@shadow-watch :dev) ; depends on shadow server
(def server (@start-electric-server! electric-server-config))
(comment (.stop server)))
; Userland Electric code is lazy loaded by the shadow build due to usage of
; :require-macros in all Electric source files.
; WARNING: make sure your REPL and shadow-cljs are sharing the same JVM!
(comment
(main) ; Electric Clojure(JVM) REPL entrypoint
(hyperfiddle.rcf/enable!) ; turn on RCF after all transitive deps have loaded
(shadow.cljs.devtools.api/repl :dev) ; shadow server hosts the cljs repl
; connect a second REPL instance to it
; (DO NOT REUSE JVM REPL it will fail weirdly)
(type 1))
|