我使用Austin设置浏览器连接的REPL,并遵循其sample project的示例,它使用Enlive将REPL脚本添加到页面。
现在我想部署我的应用程序,但我不想让Austin或我的REPL出现在制作页面上。什么是仅在开发中使用REPL的预期方式?
有没有办法使用Enlive作为我可以在开发中使用而不是在生产中使用的中间件?
答案 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及其依赖项的情况下部署到生产环境,你的代码将透明地调用上面的虚拟函数(不向你的页面注入任何内容)。