当在monorepo中工作时,特别是依赖于monorepo中定义的库时,通常通过:git/url,tag,sha
和:deps/root
将其引入,如下所示
; clojure -Sdeps '{:deps {polylith-kaocha/kaocha-wrapper
{:git/url "https://github.com/imrekoszo/polylith-kaocha"
:git/sha "d1fcd406cf0813b836419e39706ae61929a391a2"
:deps/root "projects/kaocha-wrapper"}}}' -Stree | grep 'lambdaisland/kaocha'
. lambdaisland/kaocha 1.68.1059
有时候为了开发或调试,克隆monorepo并使用:local/root
引用其库是有好处的。然而,仅用git属性指向本地文件夹的方式目前不起作用(Clojure CLI版1.11.1.1273)
; clojure -Sdeps '{:deps {polylith-kaocha/kaocha-wrapper
{:local/root "/Users/ikoszo/imre/oss/polylith-kaocha"
:deps/root "projects/kaocha-wrapper"}}}' -Stree | grep 'lambdaisland/kaocha'
(注意,lambdaisland/kaocha没有被打印出来,表明它不在依赖树中)
因为工具.deps看起来忽略了:deps/root
在:local/root
依赖项中,因此开发人员目前必须将两者结合成:local/root
,如下所示
; clojure -Sdeps '{:deps {polylith-kaocha/kaocha-wrapper
{:local/root "/Users/ikoszo/imre/oss/polylith-kaocha/projects/kaocha-wrapper"}}}' -Stree | grep 'lambdaisland/kaocha'
. lambdaisland/kaocha /Users/ikoszo/imre/oss/kaocha
. lambdaisland/kaocha /Users/ikoszo/imre/oss/kaocha
在https://clojure.org/reference/deps_and_cli中,目前是这样陈述的
常用坐标属性(所有均为可选)
...
:deps/root - 基于文件的依赖项中的一个相对目录路径,用于查找清单文件
和
本地项目属性
:local/root (必需) - 目录路径(将自动检测是否为deps或pom项目,另请参阅:deps/manifest)
阅读上述内容,:local/root
可以视为文件依赖项,这对我来说意味着:deps/root
应该正常工作,因为它没有其他说明。
是否能添加对此的支持?这将使在开发库或工具时在本地和git依赖项之间切换更加容易。
如果是这样,这也可能是有助于至少解决报告在https://clojure.atlassian.net/browse/TDEPS-132中的一部分问题。
(最初在以下Slack线程中提出并讨论:https://clojurians.slack.com/archives/C6QH853H8/p1682712720554439)