【问题标题】:In a Clojure/ClojureScript project, what are the advantages of declaring dependencies on a `deps.edn` file instead of using `shadow-cljs.edn`?在 Clojure/ClojureScript 项目中,声明依赖于 `deps.edn` 文件而不是使用 `shadow-cljs.edn` 有什么好处?
【发布时间】:2022-12-24 11:28:57
【问题描述】:

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

目前,该项目使用project.cljshadow-cljs.edn来声明依赖。

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

1 - 我们将开始使用名为 lein-tools-depslein 插件

2 - 此外,我们将调整 shadow-cljs.edn 文件,以便删除依赖项并且文件仅指示:

:dependencies true

3 - 最后,我们将创建一个新的 deps.edn 文件来保存所有依赖项。

尚不完全清楚该过程的优势。

我可以看到一个:而不是声明依赖于shadow-cljs.ednproject.clj 上,它们将在一个文件中:deps.edn

通过deps.edn 声明依赖关系而不是通过:dependencies 使用shadow-cljs.ednproject.clj 还有另一个好处吗?

例如,这会影响托管在 GitHub 包上的 Maven 包的使用吗? deps.edn 更好吗?

【问题讨论】:

    标签: clojure dependency-management clojurescript leiningen shadow-cljs


    【解决方案1】:

    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 运行时则无法做到这一点。因此,您可能必须手动对它们进行分类。它可能只是工作,真的取决于你的项目。

    【讨论】:

    • 谢谢你。关于什么私人的托管在 GitHub Packages 上的 Maven 包? shadow-cljs 可以处理它们吗?
    • 我其实不确定。如果你能用 lein project.clj 做到这一点,那么它应该与 shadow-cljs 一起工作。假设它是通过:maven {:repositories {"custom" {...}}} 地图完成的。
    猜你喜欢
    • 2022-12-24
    • 2022-12-24
    • 2020-05-18
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    相关资源
    最近更新 更多