评论来自:stuart.sierra
我可以确认这是一个bug。
当我添加了https://github.com/clojure/tools.namespace/commit/64e807c1888b494d04bb4dc96432d4d76aa0db54 文本:多个文件扩展名>时,我没有考虑到优先级顺序。
解决这个问题可能很棘手。
这始于{{c.t.n.find}}. (https://github.com/clojure/tools.namespace/blob/64e807c1888b494d04bb4dc96432d4d76aa0db54/src/main/clojure/clojure/tools/namespace/find.clj#L54 文本:c.t.n.find/find-sources-in-dir>)通过文件扩展名(由0.3中的{{platform}}参数控制)进行过滤,但一次只考虑一个目录。由于文件可能位于两个不同的目录中,它不一定能发现同名但扩展名不同的两个文件。
下一层是 {{c.t.n.file}},目前它根本不查看文件扩展名,但可能应该这么做。
在 (链接:https://github.com/clojure/tools.namespace/blob/5d6957ddb11d74fb54c92d2edccce65e8621a3f7/src/main/clojure/clojure/tools/namespace/dir.clj#L22 文本:c.t.n.dir) 中,我们有了足够的信息来优先排序和按照扩展名筛选同一命名空间下的文件。但是要正确处理,还需要处理更新。例如,对于一个既有 .cljc 文件后又添加 .clj 文件的项目,.cljc 文件应该被视作从依赖图中 删除 的。
我认为这将需要存储命名空间名称与文件名之间的关联,这是我一直希望避免的。