在页面上包含浏览器REPL的正确方法是什么,但仅限于开发中?

Pee*_*eja 6 clojure clojurescript

我正在使用Austin设置一个浏览器连接的REPL,并按照其示例项目的示例,该项目使用Enlive将REPL脚本添加到页面.

现在我想部署我的应用程序,但我不希望奥斯汀或我的REPL出现在生产页面上.只在开发中使用REPL的目的是什么?

有没有办法使用Enlive作为中间件我可以用于开发而不是生产?

cem*_*ick 5

几乎总有一些东西能够独特地区分生产环境和:dev可以用作条件的生产环境:如果在:dev,则注入结果(browser-connected-repl-js); 如果没有,不要.

如果您的部署环境没有这样的属性,我建议添加一个,因为这种"仅在环境X中 "的用例在很多方面都很常见.


另一方面,如果您希望避免将Austin及其依赖项完全包含在以生产为目标的构建中而不更改任何使用的代码browser-connected-repl-js,则一种解决方案可能是简单地假设相关的Austin名称空间,例如:

(ns cemerick.austin.repls)

(defn browser-connected-repl-js [& _] "")
Run Code Online (Sandbox Code Playgroud)

将其放入cemerick/austin/repls.cljproject.clj的非:dev配置文件中包含的目录中:source-paths.现在你的代码将在没有Austin及其依赖项的情况下部署到生产环境,你的代码将透明地调用上面的虚拟函数(不向你的页面注入任何内容).