2024 Clojure 状态调查问卷! 中分享您的想法。

欢迎!有关此操作的更多信息,请参阅 关于 页面。

0 投票
tools.deps

当在启动 clojure 时启用别名时,在处理(传递性)依赖的 deps.edn 文件时传递这些别名是否合理?

这与但不完全相同:允许在指向 deps.edn 项目的坐标中指定别名 Allow specifying aliases in coordinates that point to deps.edn projects (JIRA TDEPS-116)。

用例

我正在开发几个相互关联的库。其中之一 lambdaisland/chui-ui,有一个名为 garden 的开发时依赖。发布版本不需要 garden,它包含编译后的 css。

chui-uichui 的依赖,而 chuikaocha-cljs2 的依赖。当我在这些中任何一个上工作的时候,我会使用 :local/root 设置依赖,这样我可以轻松地在不同的源之间工作。

;; chui-ui {:aliases {:dev {:extra-deps {garden ...}}}}

;; chui {:deps {chui-ui {:local/root "modules/chui-ui"}}}

;; kaocha-cljs2 {:deps {chui {:local/root "../chui"}}}

但这不起作用,因为当我在 chuikaocha-cljs2 内启动 clojure -A:dev 时,garden 依赖没有被选中。为了使其工作,我需要将那个与 garden 的 :dev 别名复制到顶级项目中,即使 chui 或 kaocha-cljs2 与 garden 无关。

1 答案

0 投票
by

如果你的 ~/.clojure/deps.edn 文件定义了一些你在所有项目中都会使用的常用别名,比如 :test,且其中一个传递依赖项也包含了该别名,你会期望发生什么情况呢?

如果你的当前项目 deps.edn 文件定义了 :test 别名,且其中一个传递依赖项也定义了它,你会期望发生什么情况呢?

我们的项目 deps.edn 文件覆盖了用户 deps.edn 文件,因为它们都是“我们的”文件,我们对它们有控制权。这显然会导致混乱,对于任何被拉入的传递依赖项,它们可能会与其中任何一个产生干扰。

...