在启动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自定义REPL启动 详细说明了一般方法
Practicalli REPL重载 详细说明了我使用的特定开发工具(portal,hotload,命名空间重载,事件日志等)
Practicalli项目模板 提供了seancorfield/deps-new的生产级别模板,其中包括自定义的 dev/user.clj
user
命名空间,practicalli/service
模板包含与aero集成的Integrant REPL示例