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