【发布时间】:2022-12-24 11:27:56
【问题描述】:
我一直在使用 Clojure、ClojureScript、lein、shadow-cljs、re-frame、reagent、Emacs 和 CIDER 来处理 Clojure/ClojureScript 动态 Web 应用程序项目。
在其中一个私有存储库中,有一个包含以下内容的 deps.edn 文件:
{:deps
{org.clojure/clojure {:mvn/version "1.10.3"},
reagent {:mvn/version "0.10.0"},
org.clojure/tools.logging {:mvn/version "1.1.0"},
org.clojure/clojurescript {:mvn/version "1.10.866"},
ring {:mvn/version "1.9.0"},
garden {:mvn/version "1.3.10"},
metosin/malli {:mvn/version "0.5.1"},
hiccup {:mvn/version "1.0.5"},
metasoarous/oz {:mvn/version "1.6.0-alpha35"},
re-frame {:mvn/version "0.12.0"}}
同时还有一个文件shadow-cljs.edn,其定义如下:
:dependencies
[[reagent "1.1.0"]
[re-frame "1.2.0"]
[day8.re-frame/tracing "0.6.2"]
[garden "1.3.10"]
[metosin/malli "0.8.3"]
[binaryage/devtools "1.0.3"]
[day8.re-frame/re-frame-10x "1.1.11"]]
如您所见,reagent 等内容出现在两个文件中,并且它们使用不同的版本!
这让我觉得很奇怪。但该项目似乎运行良好。
为什么会这样? reagentused 的每个版本在哪里?有没有更好的方法来声明依赖关系?
;;更新
用户@EugenePakhomov 对这篇文章给出了很好的回答。该代码是尝试实现他的建议。
因此,我做了:
{:deps
{reagent {:mvn/version "0.10.0"},
re-frame {:mvn/version "0.12.0"},
garden {:mvn/version "1.3.10"},
metosin/malli {:mvn/version "0.5.1"},
org.clojure/tools.logging {:mvn/version "1.1.0"},
org.clojure/clojurescript {:mvn/version "1.10.866"},
ring {:mvn/version "1.9.0"},
hiccup {:mvn/version "1.0.5"},
metasoarous/oz {:mvn/version "1.6.0-alpha35"},
org.clojure/clojure {:mvn/version "1.10.3"},
{:alias {:cljs-only-dependencies
reagent {:mvn/version "1.1.0"},
re-frame {:mvn/version "1.2.0"},
day8.re-frame/tracing {:mvn/version "0.6.2"},
garden {:mvn/version "1.3.10"},
metosin/malli {:mvn/version "0.8.3"},
binaryage/devtools {:mvn/version "1.0.3"},
day8.re-frame/re-frame-10x} {:mvn/version "1.1.11"}}}
:source-paths ["src" "test"]}
这是您建议的正确实施吗?
【问题讨论】:
标签: clojure dependencies clojurescript leiningen shadow-cljs