在启动REPL时切换命名空间不需要将代码引入任何工具。
定义自定义 user
命名空间 是管理开发期间组件生命周期(启动、停止、重启)的一种长期方法,它不依赖于编辑器、工具或组件库,即它与所有东西兼容。
在项目中使用 dev/user.clj
文件定义一个 user
命名空间。除非以 形式存在,否则此命名空间中的代码将在REPL启动时加载。
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重新加载 说明了我所使用的特定开发工具(portal,hotload,命名空间重载,事件记录等)
Practicalli项目模板 为seancorfield/deps-new提供了生产级别的模板,这些模板包括自定义的 dev/user.clj
user
命名空间,以及包含aero的 practicalli/service
模板示例