如何在 clojurescript 中包含外部 javascript 库

Kus*_*ari 5 javascript clojurescript datamaps

我们正试图在目前用 angularjs 编写的项目中引入 clojurescript。我们正在使用一个外部 javascript 库 - datamaps。我们使用 :foreign-libs 编译器选项以下列方式获取依赖文件:

 :compiler {:output-to "resources/public/js/testable.js"                                                                       
                              :main "gofigure.test-runner"                                                                                       
                              :foreign-libs [{:file "globe.js"                                                                                   
                                              :provides ["globe"]}                                                                               
                                             {:file "datamaps/src/js/datamaps.js"                                                                
                                              :provides ["datamaps"]}                                                                            
                                             {:file "d3/d3.js"                                                                                   
                                              :provides ["d3"]}                                                                                  
                                             {:file "topojson/topojson.js"                                                                       
                                              :provides ["topojson"]}}}
Run Code Online (Sandbox Code Playgroud)

我们正面临一个错误:“无法读取未定义的属性‘世界’”

我们将此问题缩小到 datamaps 文件中的一个问题,我们认为这是因为在 foreign-libs 选项中我们提到了特定的 datamaps.js 文件,但我们遗漏了 datamaps 文件夹中的其他文件,因此没有准确编译整个库。

有没有办法将整个库作为依赖项而不仅仅是单个文件?

TAB*_*TAB 1

Shadow-cljs 可以解决这个问题。

Shadow-cljs 以最少的配置可靠、最佳地解决这些问题。特别是,shadow-cljs 允许您使用 npm 或yarn 安装 npm 模块,并使用生成的 package.json 来捆绑外部依赖项。

有关更多详细信息 https://gist.github.com/jmlsf/f41b46c43a31224f46a41b361356f04d