原子包、clojurescript、google 闭包和依赖管理

atom packages, clojurescript, google closure and dependency management

我正在用 ClojureScript 编写一些 atom(编辑器)包。我遇到了依赖加载问题。

编译后的 ClojureScript 生成如下文件 (main.js):

goog.addDependency("base.js", ['goog'], []);
goog.addDependency("../cljs/core.js", ['cljs.core'], ...)
goog.addDependency("../clojure/browser/event.js", ...)

显然,ClojureScript 严重依赖于 Google 闭包依赖管理。

但是,为了能够使用 Google 闭包,我需要包含 goog/base.js 文件。

我发现的唯一方法是添加到 goog/base.js:

module.exports = goog

并添加到 main.js:

require('./goog/base.js')

这是非常糟糕的方法,因为这些文件是生成的 - 所以它们可以被覆盖。

此外,发布编译将不包括这些行。

问题是我如何使用这两个依赖系统?

或者是否可以使用 ClojureScript w/o Google 闭包?

请指教,谢谢!

如果您将 ClojureScript :optimizations 设置为 :none 以外的其他内容(例如 :whitespace),那么生成的 .js 文件将包含 Google闭包代码内联,您不必单独引用它。

(请注意,这意味着您可能无法在 ClojureScript 代码中使用 main 函数,但您可以在顶层某处调用 main 函数。)