0

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

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

4

2 回答 2

0

最简洁的答案是不”。

SIMPLE_OPTIMIZATIONS和之间的跳跃ADVANCED_OPTIMIZATIONS可能看起来很大,但实际上归结为两个主要问题:

  1. 死代码消除
  2. 属性重命名

对于这两个项目,编译器需要相同的信息集才能正确执行此操作。它需要:

  • 对代码的每个引用的详细信息——代码本身以及编译代码之外的引用。
  • 有关已编译代码使用哪些外部库、符号或代码片段的信息。

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

迁移ADVANCED_OPTIMIZATIONS可能需要做很多工作,但它也可以在代码大小和性能方面产生巨大的回报。帮助该过程的提示:

  • 阅读并理解官方文档的注意事项部分。
  • 查看编译器项目中的常见问题解答以获取有关调试已编译代码的提示
  • 使用warning_level=VERBOSE. 虽然它确实会产生更多警告,但它有助于识别诸如缺失属性之类的东西,这通常是破坏代码的罪魁祸首。
  • 问很多问题
于 2013-04-09T17:17:54.063 回答
0

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

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

参见:applyFullCompilationOptions

在:CompilationLevel.java

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

于 2013-04-11T05:55:39.703 回答