在 Clojure/ClojureScript 项目中,声明依赖于 `deps.edn` 文件而不是使用 `shadow-cljs.edn` 有什么优点?

问题描述 投票:0回答:1

我一直在使用 Clojure、ClojureScript、lein、shadow-cljs、re-frame、reagent、Emacs 和 CIDER 来开发 Clojure/ClojureScript 动态 Web 应用程序项目。

目前,该项目使用

project.clj
shadow-cljs.edn
来声明依赖关系。

有关于改变事物的讨论,以便:

1 - 我们将开始使用名为

lein-tools-deps
lein

插件

2 - 另外,我们会调整

shadow-cljs.edn
文件,以便删除依赖项,并且该文件仅指示:

:dependencies true

3 - 最后,我们将创建一个新的

deps.edn
文件来保存所有依赖项。

目前尚不完全清楚该工艺的优点。

我可以看到一个:而不是声明对

shadow-cljs.edn
project.clj
的依赖,它们将位于单个文件中:
deps.edn

通过

deps.edn
进行依赖声明而不是通过
shadow-cljs.edn
使用
project.clj
:dependencies
是否还有另一个好处?

例如,这会影响 GitHub 包上托管的 Maven 包的使用吗?

deps.edn
这样更好吗?

clojure dependency-management clojurescript leiningen shadow-cljs
1个回答
3
投票

deps.edn
的好处是它支持直接 git 依赖项(即
:git/url
),以及本地依赖项的简单机制(即
:local/root
)。它也更现代并成为“默认”。

shadow-cljs.edn
不支持这些功能,
project.clj
有一些通过插件或其他机制(例如。
checkouts
)。

因此,如果您想要这些功能,那么使用

deps.edn
是有意义的。但是,根据您的项目的复杂程度,这可能不是一个容易的切换。

shadow-cljs
最终并不关心你如何管理你的依赖关系,但如果你将东西移出
shadow-cljs.edn
,你就会从它那里夺走“权力”。如果通过
shadow-cljs.edn
进行管理,它会尝试防止某些错误(例如依赖性冲突),但通过
deps.edn
运行时则无法做到这一点。因此,您可能必须手动整理这些内容。它可能会起作用,实际上取决于您的项目。

© www.soinside.com 2019 - 2024. All rights reserved.