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

Dan*_*ane 8 clojure clojurescript

我是Clojure和ClojureScript的忠实粉丝,我通常更喜欢使用ClojureScript而不是其他替代品用于我的项目,但有一件事有时会让我不再使用它,特别是在较小的项目上,是因为它增加了〜80kb.在生成的javascript中包含Google Closure库,即使我在代码中没有使用api也是如此.

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

Kev*_* L. 11

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


Joh*_*hnJ 6

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


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

如果:optimizations值为:none[in project.clj],则根本不会调用Google Closure Compiler,构建将直接写出ClojureScript编译器生成的JavaScript.此模式对于开发和调试很有用.但是,JavaScript输出将分散在许多单独的文件中,在浏览器中需要稍微不同的处理[...]

请注意,这可能会或可能不会减少生成的JavaScript的大小,因为Google Closure会做一些工作来删除您的代码没有专门调用的任何内容.这可能是值得玩弄的各种值:optimizations(:none,:whitespace,:simple:advanced),并看到所产生的JavaScript有多大在每种情况下.