Figwheel 多个构建(开发和测试)将在 repl 测试而不是开发中重新加载

Figwheel multiple builds (dev and test) will reload in repl test not 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 无用。 (为构建启动 ClojureScript REPL:testguidelines)如何配置 repl 以重新加载 devguidelines 而不是 testguidelines?

我不确定在 figwheel 中 运行 两个 cljsbuilds 是否真的有意义; figwheel 编译代码并将其提供给浏览器——它将如何决定为哪个版本提供服务?请注意,figwheel 至少需要一个具有 :optimizations :none 的构建,这是默认设置 - 因此您的两个构建都符合条件。

在我看来,每当 figwheel 重新编译文件时,您都在尝试 运行 测试。执行此操作的方法是使用 :on-jsload 挂钩来触发您编写的 运行 测试(例如您的 vr.test-runner)。

编辑:您完全可以 运行 在同一个 REPL 中构建两个版本,尝试使用启动 figwheel 时列出的 switch-to-build figwheel 函数。谢谢@user2906524!

一个 ClojureScript REPL 一次只能连接一个 "build"。如果您正在自动构建两个或多个构建,您可以切换 "build",通过退出当前 REPL 连接到 REPL。要退出,您必须在提示符处输入 :cljs/quit

Figwheel 然后会询问您是否要将 REPL 连接到不同的构建,并会列出选项。