You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Lein的Clojure/ClojureScript项目如何避免依赖声明重复?

解决方案

第一步:统一依赖版本

先解决多文件中依赖版本不一致的问题,优先选用各依赖的最新稳定版(或你确认要保留的版本),整理出统一的依赖清单:

  • 通用依赖(前后端共享):
    • org.clojure/clojure: 1.11.1
    • org.clojure/tools.logging: 1.2.4
    • org.clojure/clojurescript: 1.11.60
    • reagent: 1.1.0
    • re-frame: 1.2.0
    • garden: 1.3.10
    • metosin/malli: 0.8.4
    • metasoarous/oz: 1.6.0-alpha35
    • hiccup: 1.0.5
    • ring: 1.9.0(来自原deps.edn)
  • 前端专属依赖(仅shadow-cljs使用):
    • day8.re-frame/tracing: 0.6.2
    • binaryage/devtools: 1.0.3
    • day8.re-frame/re-frame-10x: 1.1.11

第二步:更新project.clj

将所有通用依赖写入project.clj的:dependencies,替换原有内容:

:dependencies
[[org.clojure/clojure        "1.11.1"]
 [org.clojure/tools.logging  "1.2.4"]
 [org.clojure/clojurescript  "1.11.60"]
 [reagent                    "1.1.0"]
 [re-frame                   "1.2.0"]
 [garden                     "1.3.10"]
 [metosin/malli              "0.8.4"]
 [metasoarous/oz             "1.6.0-alpha35"]
 [hiccup                     "1.0.5"]
 [ring                       "1.9.0"]]

第三步:配置shadow-cljs.edn复用project.clj依赖

修改shadow-cljs.edn,只保留前端专属依赖,同时开启Leiningen集成,让shadow-cljs自动读取project.clj中的依赖,避免重复声明:

;; 启用Leiningen集成,复用project.clj的依赖和classpath
:lein true

:dependencies
[[day8.re-frame/tracing "0.6.2"]
 [binaryage/devtools "1.0.3"]
 [day8.re-frame/re-frame-10x "1.1.11"]]

;; 其他原有配置(如:builds、:source-paths等)保持不变

第四步:弃用deps.edn

直接删除项目根目录下的deps.edn文件(或重命名为deps.edn.bak备份),确保项目不再使用该文件。

验证方式

  1. 运行lein deps,确认Leiningen能正常拉取所有通用依赖
  2. 运行shadow-cljs compile app(或你的build ID),确认shadow-cljs能正常加载project.clj的依赖 + 自身专属依赖,无版本冲突或缺失

内容的提问来源于stack exchange,提问作者Pedro Delfino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:45:34