2024年Clojure调查!中分享您的想法。

欢迎!请参阅关于页面,了解有关这些工作的更多信息。

+18
tools.deps
重标记

以下是我的一般问题描述(也适用于单一代码库)

  1. a 开发团队共同开发多个项目,每个项目都有自己的 deps.edn 文件,
  2. 这些开发者在各自的 ~/.clojure/deps.edn 文件中有自己的首选工具配置,
  3. 而团队整体希望在同一多个项目中保持某些库或工具版本的一致性,通过提供一些标准化别名和一些“冻结”版本(例如,:override-deps:default-deps)来实现。

弹点 1 和 2 由 CLI/t.d.a. 支持,但没有地方悬挂多项目标准化的一部分。

目前,希望实现 3 的人正在使用 CLJ_CONFIG 提供 team-standard deps.edn 文件,但在这个过程中失去了 1。这被认为是一种小小的黑客手法(尽管 CLJ_CONFIG 是有文档的)。

Michiel Borkent 指出,他的 clj-kondo 工具在读取配置数据的地方面临了类似的问题,他的解决方案是提供命令行参数,指定读取多个配置文件。可以采用类似的方法处理 Clojure CLI,允许任意多个 deps.edn 文件混合(在系统 + 用户级别的文件之后和命令行 -Sdeps 数据之前)。

当前的“系统 + 用户 + 项目 + 命令行”逻辑 already組み込まれており、これは単なる CLI スクリプトの変更ではありません – この問題に対処するためのいかなる方法も、ユーザー固有のアライアスの下で合併した deps.edn 环境に基づいて分析を実行する必要があるツール(ここで議論されています https://ask.clojure.org/index.php/9848/tooling-based-tools-alpha-construct-basis-specified-aliases)には、_available

在过去几年中几乎没有更新。我们能做些什么来推动这个项目的发展吗?

3 个答案

+1

选为最佳答案的
 
最佳答案

哎呀,我创建了追踪这个问题的 jira,但是忘记在这里添加链接: https://clojure.atlassian.net/projects/TDEPS/issues/TDEPS-174

此链接导致跳转到问题列表的整个列表,看起来这是该URL

https://clojure.atlassian.net/browse/TDEPS-174
正确,jira的 url / ui 是最差的...
0

我对这个问题有一些后续问题。关于“共享”的东西——这是共享一系列依赖项或一系列依赖项版本(类似于maven/lein依赖项管理)的重要事项吗?

在后一种情况下,指定版本将不会包括依赖项,就像在deps.edn :deps中一样——它们仍然需要由一个项目包括,但可以有nil的坐标,由默认值填充版本。

我们的主要用例是用于:override-deps,因此我们可以“锁定”系统内所有子项目中某些依赖项的版本(而非:default-deps)。对于工具等实际的共享依赖项是次要的,但这确实是一个非常好的特性。

我们的共享工具包括测试依赖项、测试运行器和uberjar构建。
但如果在您的依赖项中未指定版本,则锁定版本似乎应该是:default-deps?这两个的区别在于:default-deps不会添加到实际的依赖项中,只是提供必要的版本,而:override-deps将两者都做。
:override-deps会覆盖传递依赖的版本,这些版本在哪里出现(这正是我们想要的),但如果这些库未在其他地方请求,则不会添加到依赖项。

:default-deps只针对版本为nil的显式依赖项提供版本(对吗?)
是的,抱歉。我混淆了 :deps 和 :override-deps(晚上回复过晚的风险)。
0

需要共享的东西是否只是别名?

或者是 deps?如果是后者,是只针对外部依赖,还是它们包括本地依赖在内的共享项目集?

我们有共享的别名,以及依赖。我将私下与你分享我们的“共享依赖文件”,以便你确切了解我们在做什么。
...