原子包、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
函数。)
我正在用 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
函数。)