如何在不同的clojurescript项目中使用共同的依赖?

How to use common dependencies in different clojurescript projects?

我写了一个 clojurescript 项目。它是一种试剂成分。现在我想在其他 clojurescript 项目中使用这个组件。这就是我所做的:我编译了我的 cljs 项目,然后将结果编译文件放入其他项目的 js 文件夹中。此外,我需要来自 index.html 的文件。最后我从 cljs 文件

调用我的组件
(.slider-view (.-views js/swipe) (clj->js [[:p "1"]
                                           [:p "2"]
                                           [:p "3"]]))

并且有效。但我有一个问题。我的项目和我连接组件的项目有共同的要求。例如 React 和 ReactDOM。如何从我的项目中排除这两个引用,然后从另一个项目中连接它?有替代方法吗?例如直接从另一个 cljs 项目中获取 cljs 命名空间

即使您可以防止 JavaScript 库被包含两次,您仍然会有大量的 ClojureScript 标准库被编译两次。正如您所建议的,您需要将第一个项目放在第二个项目的类路径中(通过将其添加到 project.clj 或等效项),然后直接包含该命名空间。

基于贾斯汀相当正确的答案...

你描述的正是正常的ClojureScript依赖关系。在这种情况下,依赖是你创建的东西,而不是别人现有的库,但还是一样的情况。

有一个重要的微妙之处需要注意。您可能希望同时开发这两个项目。这可能看起来很棘手,因为依赖项通常需要版本号、部署和所有其他繁重的工作,这对于快速开发来说太痛苦了。

幸运的是,标准的 ClojureScript 工具为此提供了一个解决方案,称为 Leiningen checkouts 目录,它的工作原理是让您在主项目目录中放置一个指向您的依赖项的符号链接。

详细信息在 checkout-dependencies section of the Leiningen 文档中;或者只是网络搜索 "Clojure checkouts",如果它曾经衰减。

随着您深入了解这些技术,您可能会遇到一些涉及 Figwheel 工具的更微妙的问题。当你到了那个阶段,这个article可能也会有用。