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 连接到不同的构建,并会列出选项。
我们有一个项目和 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 连接到不同的构建,并会列出选项。