Skip to content

Instantly share code, notes, and snippets.

@ilshad
Last active November 15, 2018 06:14
Show Gist options
  • Save ilshad/d3003d03a5e25be963c065a0f9bea77c to your computer and use it in GitHub Desktop.
Save ilshad/d3003d03a5e25be963c065a0f9bea77c to your computer and use it in GitHub Desktop.
Quickstart with Clojure CLI + Cider + Figwheel + Pedestal
{:deps {org.clojure/clojure {:mvn/version "1.9.0"}
org.clojure/clojurescript {:mvn/version "1.10.339"}
io.pedestal/pedestal.service {:mvn/version "0.5.4"}
io.pedestal/pedestal.jetty {:mvn/version "0.5.4"}
io.pedestal/pedestal.service-tools {:mvn/version "0.5.4"}
com.bhauman/rebel-readline-cljs {:mvn/version "0.1.4"}
com.bhauman/figwheel-main {:mvn/version "0.1.9"}
hiccup {:mvn/version "1.0.5"}}
:paths ["src" "target" "resources"]
:aliases
{:dev
{:extra-paths ["test" "dev"]
:extra-deps {nrepl/nrepl {:mvn/version "0.4.4"}
cider/cider-nrepl {:mvn/version "0.19.0-SNAPSHOT"}
cider/piggieback {:mvn/version "0.3.9"}}
:main-opts ["-m" "nrepl.cmdline"
"--port" 7777
"--middleware" "[cider.nrepl/cider-middleware,cider.piggieback/wrap-cljs-repl]"]}}}
(ns dev
(:require [figwheel.main.api :as figwheel]
[io.pedestal.http :as http]
[io.pedestal.http.route.definition.table :as table]
[ring.util.response :as response]
[hiccup.page :as h]))
(defn run-figwheel []
(figwheel/start
{:id "dev"
:options {:main 'myapp.core
:install-deps true
:npm-deps {:react "15.6.1"
:react-dom "15.6.1"}}
:config {:css-dirs ["resources/public/css"]
:log-file "logs/figwheel.log"
:watch-dirs ["src"]
:open-url false}}))
(def stop-figwheel figwheel/stop-all)
(defn cljs-repl []
(figwheel/cljs-repl "dev"))
(defn page [request]
(response/response
(h/html5
[:head
[:title "My App"]
[:meta {:charset "utf-8"}]
[:meta {:name "viewport"
:content "width=device-width, initial-scale=1, user-scalable=no"}]
[:link {:rel "stylesheet"
:type "text/css"
:href "https://use.fontawesome.com/releases/v5.4.1/css/all.css"
:integrity "sha384-5sAR7xN1Nv6T6+dT2mhtzEpVJvfS3NScPQTrOxhwjIuvcA67KV2R5Jz6kr4abQsz"
:crossorigin "anonymous"}]
[:link {:rel "stylesheet"
:type "text/css"
:href "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
:integrity "sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
:crossorigin "anonymous"}]
(h/include-css "/css/style.css")]
[:body
[:div {:id "app"}]
(h/include-js "/cljs-out/dev-main.js")])))
(def routes
(table/table-routes
[["/" :get [http/html-body page] :route-name ::home]]))
(defonce runnable-service (atom {}))
(defn start []
(->> {::http/routes #(deref #'routes)
::http/router :linear-search
::http/resource-path "/public"
::http/type :jetty
::http/port 8888
::http/join? false
::http/secure-headers {:content-security-policy-settings
{:object-src "none"}}
:env :dev}
http/default-interceptors
http/dev-interceptors
http/create-server
http/start
(reset! runnable-service)))
(defn stop []
(http/stop @runnable-service))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment