src/deps.cljs
src/react/react.js
src/react/react.min.js
src/react/externs.js
本页介绍如何将非 Closure 兼容的 JavaScript 库打包供 ClojureScript 使用。在打包库之前,请确保该库尚未由其他人打包。 CLJSJS 是一项很有前途的社区驱动的项目,旨在提供一套经过精心挑选的依赖项。为了避免重复工作和依赖项冲突,建议您为像 CLJSJS 这样的联合项目贡献力量。
当为 ClojureScript 使用打包非 Closure 兼容的库时,请确保包含库的开发版本、库的生产版本和一个 externs 文件。例如,如果您正在打包 React 以供使用,那么目录结构可能如下所示
src/deps.cljs
src/react/react.js
src/react/react.min.js
src/react/externs.js
请注意,您必须指定 deps.cljs
用于 React 的 deps.cljs 文件可能如下所示
{:foreign-libs
[{:file "react/react.js"
:file-min "react/react.min.js"
:provides ["com.facebook.React"]}]
:externs ["react/externs.js"]}
现在,用户只需像在他们的 pom.xml 或 project.clj 中添加其他依赖项一样添加您的 JAR,并在他们的 ClojureScript 源代码中 require com.facebook.React
命名空间来导入 React。重要的是要了解,在这种情况下命名空间是完全合成的 - 外部依赖项始终在全局范围内加载。
JAR 可以包含您喜欢的任意数量的外部库,只需在 :foreign-libs
向量中添加更多条目即可。
:file-min
是完全可选的,但建议使用上述模式,为库使用者提供最佳体验。
有关完整示例,请参阅 react-cljs。
如果您的外部库有依赖项,那么您必须在 :requires
向量中枚举它们。
{:foreign-libs
[{:file "jquery/jquery.js"
:file-min "jquery/jquery.min.js"
:provides ["org.jquery.jQuery"]}
{:file "jquery/ui/core.js"
:file-min "jquery/ui/core.min.js"
:provides ["org.jquery.ui.Core"]
:requires ["org.jquery.jQuery"]}
{:file "jquery/ui/autocomplete.js"
:file-min "jquery/ui/autocomplete.min.js"
:provides ["org.jquery.ui.Autocomplete"]
:requires ["org.jquery.ui.Core"]}]
:externs ["jquery/jquery.js" "jquery/jquery.ui.js"]}