Несколько сборок Figwheel (dev и test) будут перезагружены в repl test, а не в dev

У нас есть проект и 2 сборки:

  :cljsbuild {:builds
          [

           {:id "devguidelines"
            :source-paths ["src"]

            :figwheel {:on-jsload "vr.guidelines/on-js-reload"}

            :compiler {:main vr.guidelines
                       :asset-path "js/compiled/out"
                       :output-to "resources/public/js/compiled/vr.guidelines.js"
                       :output-dir "resources/public/js/compiled/out"
                       :source-map-timestamp true}}

           {:id "testguidelines"
            :source-paths ["src" "test"]
            :compiler {:output-to "resources/public/js/test/test.guidelines.js"
                       :output-dir "resources/public/js/test/out"
                       :optimizations :none
                       :main vr.test-runner
                       :asset-path "js/test/out"
                       :source-map true
                       ;; :source-map-timestamp true
                       :cache-analysis true }}

когда я начинаю это:

rlwrap lein figwheel devguidelines testguidelines

однако они оба создаются в repl, я получаю доступ к testguidelines, а не к devguidelines, что делает repl бесполезным. (Запуск REPL ClojureScript для сборки: testguidelines) Как я могу настроить repl для перезагрузки devguidelines, а не testguidelines?


person Dan Bunea    schedule 10.01.2016    source источник


Ответы (2)


ClojureScript REPL может одновременно подключаться только к одной «сборке». Если вы автоматически создаете две или более сборок, вы можете переключить «сборку», к которой подключен REPL, выйдя из текущей REPL. Чтобы выйти, вы должны ввести :cljs/quit в командной строке.

Затем Figwheel спросит вас, хотите ли вы подключить REPL к другой сборке, и предложит варианты.

person Bruce Hauman    schedule 17.04.2016

Я не уверен, что действительно имеет смысл запускать два cljsbuild внутри figwheel; figwheel компилирует код и передает его в браузер — как он решит, какую сборку обслуживать? Обратите внимание, что для figwheel требуется по крайней мере одна сборка с :optimizations :none, которая используется по умолчанию, поэтому обе ваши сборки подходят.

Мне кажется, что вы пытаетесь запускать тесты всякий раз, когда figwheel перекомпилирует файлы. Способ сделать это — использовать хук :on-jsload для запуска написанного вами исполнителя тестов (например, вашего vr.test-runner).

РЕДАКТИРОВАТЬ: вы можете запустить две сборки в одном и том же REPL, попробуйте использовать функцию switch-to-build figwheel, которая появляется в списке при запуске figwheel. Спасибо @user2906524!

person Conan    schedule 14.01.2016
comment
Идея запуска обоих пришла от отца фигового колеса: youtu.be/j-kj2qwJa_E?t =26м44с . Однако вы можете быть правы, если что-то сделаете :on-jsload. - person Dan Bunea; 18.01.2016
comment
Да я этого не знал, это туз! - person Conan; 27.01.2016