2016-07-22 3 views
2

Я новичок в clojure, и мне сложно узнать, как перезагрузить/обновить браузер, когда были внесены изменения в html/js/css и т. Д.Auto-refresh/Auto-reload assets

это моя текущая настройка project.clj

(defproject app2 "0.1.0-SNAPSHOT" 
    :description "FIXME: write this!" 
    :url "http://exampl.com/FIXME" 
    :dependencies [[org.clojure/clojure "1.8.0"] 
       [org.clojure/clojurescript "1.9.89"] 
       [ring/ring-core "1.5.0"] 
       [ring/ring-jetty-adapter "1.5.0"] 
       [enfocus "2.0.0-SNAPSHOT"]] 
    :plugins [[lein-cljsbuild "1.1.3"] 
      [lein-ring "0.9.7"]] 
    :cljsbuild {:builds [{:source-paths ["src/cljs"], 
         :compiler { 
          :main "scripts.client" 
          :output-to "resources/public/js/main.js" 
          :output-dir "resources/public/js/out" 
          :asset-path "js/out" 
          ;;:pretty-print true 
          ;;:optimizations :none 
          }}]} 
    :main app2.server/app 
    :ring {:handler app2.server/app :auto-reload? true :auto-refresh? true :reload-paths ["src" "resources"]} 
    :profiles { 
    :dev { 
      :ring { 
       :nrepl { 
       :start? true 
       :port 9000 
       } 
      } 
      } 
    } 
) 

Это мой server.clj

(ns app2.server 
    (:use [ring.middleware.resource :only [wrap-resource]] 
     [ring.middleware.file-info :only [wrap-file-info]] 
     [ring.middleware.reload :refer [wrap-reload]]) 

     ;;(:require app2.repl) 
) 


(defn handler 
    [request] 
    {:status 200} 

) 

;handling routing "/" -> "/index.html" 
(defn wrap-index [handler] 
    (fn [req] 
    (println (pr-str req)) 
    (if (= (:uri req) "/") 
     (handler (assoc req :uri "/index.html")) 
     (handler req)))) 

;setting up a simple resource handler for ring 
(def app (-> handler 
      (wrap-resource "public") 
      (wrap-file-info) 
      (wrap-index) 
      (wrap-reload app {:dirs ["src" "resources"]}) 
      )) 

Как ча Это можно сделать?

Я привык к разработке в узле, и у вас есть инструменты, такие как синхронизация браузера, weinre и supervisor. Каковы эквиваленты в clojure?

ответ

3

Предлагаю вам ознакомиться с figwheel, что позволяет делать горячую перезагрузку вашего ClojureScript и CSS в браузере.

Существует, конечно, не один хороший способ настроить вашу сборку, но мой способ работать с такими языками, как SASS и т. Д., - это смотреть и компилировать их как отдельный процесс, а Figwheel - смотреть созданные CSS.

К примеру, на одном из моих ClojureScript проектов, у меня был файл сценария для МЕНЬШЕ компиляции, который использовал МЕНЬШЕ компилятор и wr утилиты непосредственно:

#!/usr/bin/env bash 
lessc src/styles/main.main.less resources/public/css/main.css --source-map && cp src/styles/*.less resources/public/css 
wr "lessc src/styles/main.main.less resources/public/css/main.css --source-map && cp src/styles/*.less resources/public/css" src/**/*.less 

Конечно, вы также можете использовать такие вещи, как Глоток, Webpack - или любой инструмент, к которому вы привыкли.

Альтернатива заключается в использовании плагинов Leiningen, см. Список here.