我可以在没有Google Closure lib的情况下编译ClojureScript吗?

时间:2013-04-15 03:39:45

标签: clojure clojurescript

我是Clojure和ClojureScript的忠实粉丝,我通常更喜欢使用ClojureScript而不是其他替代方案来进行我的项目,但是有时让我不再使用它,特别是在较小的项目中,有一件事是~80kb通过在生成的javascript中包含Google Closure库来添加,即使我在代码中没有使用apis。

有没有办法编译ClojureScript以避免这种额外的重量?

2 个答案:

答案 0 :(得分:11)

额外的大小不是来自Google Closure库 - 如果您启用了高级优化,Closure编译器将删除您在最终JavaScript中未使用的任何Closure库代码。 相反,JavaScript似乎很大,因为在那里有一个完整的Clojure运行时实现了懒惰的seqs,promises等等。

答案 1 :(得分:6)

更正:正如Zubair指出的那样,下面的步骤会禁用Google Closure优化,但不会从最终的JavaScript中删除Google Closure代码。您应该选择高级优化来消除未使用的JavaScript,如其他答案所示。


ClojureScript: Up and Running中,作者解释了如何禁用Google Closure步骤:

  

:optimizations:none [在[{1}}]中,Google Closure编译器   根本不会被调用,构建将写出来   由ClojureScript编译器直接生成的JavaScript。这种模式   对于开发和调试很有用。但是,JavaScript   输出将分成许多单独的文件,需要稍微   浏览器中的不同处理[...]

请注意,这可能会或可能不会减少生成的JavaScript的大小,因为Google Closure会做一些工作来删除您的代码没有专门调用的任何内容。可能值得使用project.clj:optimizations:none:whitespace:simple)的各种值,并了解每个值在每个值中的大小情况下。