У меня есть приложение clj / cljs, и я использую boot как инструмент для сборки.
У меня есть задача dev
, которая дает мне среду разработки с немедленной обратной связью, и она отлично работает!
Однако у меня возникли проблемы при попытке настроить задачу сборки, которая генерирует .jar
, который можно развернуть в рабочей среде.
Проблема :
Производственная сборка все еще пытается подключиться к weasel
. При просмотре в консоли браузера:
websocket.js:283 WebSocket connection to 'ws://localhost:35243/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
- 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
можно найти здесь .