我一直在使用 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
这样更好吗?
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
运行时则无法做到这一点。因此,您可能必须手动整理这些内容。它可能会起作用,实际上取决于您的项目。