Создание производственной сборки с помощью boot-cljs - PullRequest
1 голос
/ 10 июня 2019

У меня есть приложение clj / cljs, и я использую boot как инструмент для сборки.

У меня есть задача dev, которая дает мне среду разработки с немедленной обратной связью, и она отлично работает!

Однако у меня возникли проблемы при попытке настроить задачу сборки, которая генерирует .jar, который можно развернуть в рабочей среде.

Проблема :

  1. Производственная сборка все еще пытается подключиться к weasel. При просмотре в консоли браузера:

     websocket.js:283 WebSocket connection to 'ws://localhost:35243/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
    
  2. React Developer Tool (расширение браузера) говорит, что приложение использует сборку реагента dev и указывает мне на этот URL: https://reactjs.org/docs/optimizing-performance.html#use-the-production-build. (я установил оптимизацию компилятора cljs на :advanced)

Может кто-нибудь указать мне, что я делаю не так?

Моя dev задача выглядит следующим образом:

(deftask add-cljs-dev-deps []
  (merge-env! :dependencies
              '[[cider/piggieback "0.4.1" :scope "test"]
                [nrepl "0.6.0" :scope "test"]
                ;; [com.cemerick/piggieback "0.2.2" :scope "test"]
                [weasel "0.7.0" :scope "test"]
                [org.clojure/tools.nrepl "0.2.13" :scope "test"]])
  identity)

(deftask dev
  "Launch Immediate Feedback Development Environment"
  []
  (require '[adzerk.boot-reload]
           '[pandeiro.boot-http]
           '[adzerk.boot-cljs-repl])
  (let [reload (resolve 'adzerk.boot-reload/reload)
        serve (resolve 'pandeiro.boot-http/serve)
        cljs-repl (resolve 'adzerk.boot-cljs-repl/cljs-repl)
        start-repl (resolve 'adzerk.boot-cljs-repl/start-repl)]
    (comp
     (add-cljs-dev-deps)
     (serve :handler 'myapp.core/app ;; ring handler
            :resource-root "public"  ;; root classpath
            :port 3500
            :reload true)            ;; reload ns
     (watch)
     (reload)
     (cljs-repl) ;; before cljs task
     (cljs :source-map true :optimizations :none)
     (sass)
     (target :dir #{"public"}))))

и моя build задача для производства выглядит следующим образом:

(deftask build
  "Builds an uberjar of this project that can be run with java -jar"
  []
  (comp
   (aot :all true) 
   (pom)
   (cljs :optimizations :advanced
         :compiler-options {:optimizations :advanced})
   (sass)
   (sift :move {#"(.*)js$" "public/$1js"
                #"(.*)html$" "public/$1html"
                #"css/(.*)" "public/css/$1"})
   (uber :exclude-scope #{"test"})
   (jar :file "myapp.jar" :main 'myapp.server )
   (sift :include #{#"myapp.jar"})
   (target)))

Полный текст build.boot можно найти здесь .

...