Clojure 重新加载处理显式加载的源文件的中间件
Ring附带中间件“重新加载”(https://github.com/ring-clojure/ring/blob/master/ring-devel/src/ring/middleware/reload.clj). 它基于ns跟踪器(https://github.com/weavejester/ns-tracker). ns tracker在源目录中查找可能以ns表单开头的源文件。它根据这些ns表单中包含的信息构建依赖关系图。这当然非常有效,但仅适用于ns表单中明确包含的依赖项 Clojure中有一个习惯用法,将名称空间分解为多个文件。有一个定义名称空间的源文件(使用ns表单)。这个文件可以包含任意数量的顶级表单,但值得注意的是,它将包含加载,通常在顶级,但我想不一定。加载的文件以ns表单开头。这并不像你想象的那么晦涩难懂。。。clojure.core使用它 这些加载文件的内容本身并不构成模块,也不一定能强制它们成为模块(循环依赖项等) ns tracker不会扫描源文件以查找加载表达式,也不会在ns表单中查找。原因很清楚。但它确实打乱了我的工作流程,因为对加载文件的更改显然不会重新加载名称空间Clojure 重新加载处理显式加载的源文件的中间件,clojure,compojure,ring,Clojure,Compojure,Ring,Ring附带中间件“重新加载”(https://github.com/ring-clojure/ring/blob/master/ring-devel/src/ring/middleware/reload.clj). 它基于ns跟踪器(https://github.com/weavejester/ns-tracker). ns tracker在源目录中查找可能以ns表单开头的源文件。它根据这些ns表单中包含的信息构建依赖关系图。这当然非常有效,但仅适用于ns表单中明确包含的依赖项 Clojure
有人知道是否有一个库处理显式加载的源文件吗?如果没有什么东西,我会把它拼凑起来(可能是写一些关于load的难看的宏),并公开发布。好的,回答我的问题。。。我已经扩展了ns tracker并提交了拉取请求。这比我想象的要简单,实际上是合理的 我的叉子在: 包括对ns tracker的许多更改。具体到我的问题,它支持以clojure/core使用的方式在ns中使用load/in 通过使用leiningen的“签出”机制,您可以在项目中使用这个fork