请在2024 Clojure 述情调查中分享您的想法!

欢迎!请参阅关于页面了解有关此工作方式的更多信息。

0
tools.deps

当在启动 clojure 时启用别名时,在处理(传递性)依赖的 deps.edn 文件时传播这些别名有意义吗?

这与以下内容相关,但不同:允许指定指向 deps.edn 项目的坐标中的别名(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

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

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

我们使用项目deps.edn覆盖用户deps.edn,因为这两个文件都是我们易于控制的“我们的”文件 — 这对小移植依赖性来说似乎是一种混乱,因为它可能与这两个中的任何一个发生冲突。

...