在启动REPL时,不需要将代码引入任何工具以切换命名空间。
定义自定义 user
命名空间 是一种长期以来应用于开发中管理组件生命周期(启动、停止、重启)的方法,它不依赖于编辑器、工具或组件库,即它与所有工具兼容。
在项目中创建一个 dev/user.clj
文件,该文件定义了一个 user
命名空间。在REPL启动期间,除非代码在 comment
形式中,否则这个命名空间中的代码会被加载。
REPL从 user
命名空间开始,因此在 dev/user.clj
中定义的函数无需切换到不同的命名空间或使用完全限定名即可立即使用。
在自定义的 dev/user.clj
user
命名空间中定义管理组件的函数,它们可以立即在REPL使用的默认命名空间中使用。
这种方法的附加好处是代码更干净,并且开发支持代码与生产代码之间有明确的分离。
可以通过Clojure CLI别名包含类似component repl和integrant repl之类的库,这样就不会给CI工作流程和生成的部署uberjar增加重量。
自定义的 user
命名空间包含了组件repl(或其他开发时组件库,如Integrant REPL)的require语句。
我个人使用这种方法启动一系列开发工具,无论它是Leiningen还是Clojure CLI项目。
Practicalli自定义REPL启动详细介绍了通用方法
Practicalli REPL Reloaded详细介绍了我使用的特定开发工具(portal,hotload,命名空间重新加载,事件日志等)
Practicalli项目模板为seancorfield/deps-new提供了包含自定义的 dev/user.clj
user
命名空间的顶级模板,包含Integrant REPL示例(与aero集成)