Javascript 更细粒度的闭包编译器标志?

Javascript 更细粒度的闭包编译器标志?,javascript,performance,minify,google-closure-compiler,Javascript,Performance,Minify,Google Closure Compiler,我正在使用闭包编译器来精简和连接我的脚本,我想使用ADVANCED\u OPTIMIZATIONS标志从中获得更多的缩小魔法。但是,当我使用此标志并且不起作用时,我的一些脚本会创建警告。我想通过一系列较小的选择,看看哪一个打破它,而不是通过一个标志一步,也许我不会得到100%的大小减少提供,但更接近 是否有任何较小的单独标志传递给google closure编译器选项,以打开'ADVANCED\u OPTIMIZATIONS'标志的单独功能?简短的回答是“否” 简单优化和高级优化之间的跳跃似乎很

我正在使用闭包编译器来精简和连接我的脚本,我想使用
ADVANCED\u OPTIMIZATIONS
标志从中获得更多的缩小魔法。但是,当我使用此标志并且不起作用时,我的一些脚本会创建警告。我想通过一系列较小的选择,看看哪一个打破它,而不是通过一个标志一步,也许我不会得到100%的大小减少提供,但更接近

是否有任何较小的单独标志传递给google closure编译器选项,以打开
'ADVANCED\u OPTIMIZATIONS'
标志的单独功能?

简短的回答是“否”

简单优化
高级优化
之间的跳跃似乎很大,但实际上归结为两个主要问题:

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

    • 对代码的每次引用的详细信息—包括代码本身内部的引用以及编译代码外部的引用
    • 有关编译代码使用的外部库、符号或代码段的信息
    通过了解这两条信息,编译器既可以安全地重命名公共/全局属性和变量,也可以完全消除从未使用过的代码

    转移到
    高级\u优化
    可能需要大量的工作,但它也可以在代码大小和性能方面产生巨大的回报。帮助完成此过程的提示:

    • 阅读并理解官方文件的章节
    • 有关调试编译代码的提示,请查看编译器项目中的
    • 使用
      warning\u level=VERBOSE
      。虽然它确实会产生更多的警告,但它有助于识别丢失属性之类的东西,而这些属性往往是导致代码损坏的罪魁祸首
    • 问很多问题

    您可以使用java api来优化编译器。基本上您可以自定义命令行:

    或者,您可以创建编译器的自定义版本,并使用高级模式使用的选项进行旋转:

    请参阅:ApplyFullCompliationOptions

    在:compilelevel.java中