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

时间:2014-09-16 01:38:24

标签: clojure clojurescript

我使用Austin设置浏览器连接的REPL,并遵循其sample project的示例,它使用Enlive将REPL脚本添加到页面。

现在我想部署我的应用程序,但我不想让Austin或我的REPL出现在制作页面上。什么是仅在开发中使用REPL的预期方式?

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

1 个答案:

答案 0 :(得分:5)

几乎总有一些东西可以将生产环境与:dev区别开来,可以用作条件:如果在:dev中,则注入(browser-connected-repl-js)的结果;如果没有,请不要。

如果您的部署环境没有这样的属性,我建议添加一个,因为这种“仅在环境 X ”用例对于很多事情来说非常常见。


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

(ns cemerick.austin.repls)

(defn browser-connected-repl-js [& _] "")

将其放在cemerick/austin/repls.clj的{​​{1}}非project.clj个人资料:dev中的目录中。现在你的代码将在没有Austin及其依赖项的情况下部署到生产环境,你的代码将透明地调用上面的虚拟函数(不向你的页面注入任何内容)。