更多粒状闭合编译器标志?

时间:2013-04-09 13:26:38

标签: javascript performance minify google-closure-compiler

我使用闭包编译器来minfiy并连接我的脚本,我想使用ADVANCED_OPTIMIZATIONS标志来获得更多的缩小魔法。但是,当我使用此标志并且不起作用时,我创建了一些警告。我想通过一堆较小的选项而不是通过那一个标志,看看哪一个打破了它,也许我不会100%减小尺寸,但更接近。

是否有任何较小的单个标记传递给Google封闭编译器选项以打开'ADVANCED_OPTIMIZATIONS'标志的各个功能?

2 个答案:

答案 0 :(得分:0)

简短的回答是“不”。

SIMPLE_OPTIMIZATIONSADVANCED_OPTIMIZATIONS之间的跳跃似乎很大,但它确实归结为两个主要问题:

  1. 死码消除
  2. 属性重命名
  3. 对于这两个项目,编译器需要相同的信息集才能正确执行此操作。它需要:

    • 有关代码的每个引用的详细信息 - 包括代码本身以及编译代码之外的引用。
    • 有关编译代码使用的外部库,符号或代码片段的信息。

    通过了解这两条信息,编译器可以安全地重命名公共/全局属性和变量,并完全消除从未使用过的代码。

    转移到ADVANCED_OPTIMIZATIONS可能会有很多工作,但它也可以在代码大小和性能方面产生巨大的回报。有助于整个过程的提示:

    • 阅读并理解官方文档的What to watch out for部分。
    • 查看编译器项目中的FAQ以获取有关调试已编译代码的提示
    • 使用warning_level=VERBOSE。虽然它确实会产生更多警告,但它有助于识别缺少属性的内容,这些内容通常是代码损坏的罪魁祸首。
    • 提出很多问题

答案 1 :(得分:0)

您可以使用java api调整编译器优化。基本上你自定义命令行:
http://blog.bolinfest.com/2009/11/calling-closure-compiler-from-java.html

或者,您可以创建编译器的自定义构建,并使用用于高级模式的选项:

参见:applyFullCompilationOptions

in:CompilationLevel.java

http://closure-compiler.googlecode.com/git-history/805436ff85a6975fb482aa298c8f3bce4a2a832f/src/com/google/javascript/jscomp/CompilationLevel.java