Больше флагов компилятора Granular Closure?

Я использую компилятор замыкания для минимизации и объединения моих скриптов, и я хотел бы использовать флаг ADVANCED_OPTIMIZATIONS, чтобы получить от него еще больше магии минимизации. Однако некоторые из сценариев, которые у меня есть, создают предупреждения, когда я использую этот флаг, и не работают. Я хотел бы вместо того, чтобы передавать этот флаг через кучу меньших вариантов и посмотреть, какой из них нарушает его, и, возможно, я не получу 100% предлагаемого уменьшения размера, но ближе.

Существуют ли какие-либо меньшие отдельные флаги, которые можно передать параметрам компилятора закрытия Google, чтобы включить отдельные функции флага 'ADVANCED_OPTIMIZATIONS'?


person BillPull    schedule 09.04.2013    source источник


Ответы (2)


Короткий ответ - нет".

Скачок между SIMPLE_OPTIMIZATIONS и ADVANCED_OPTIMIZATIONS может показаться огромным, но на самом деле он сводится к двум основным проблемам:

  1. устранение мертвого кода
  2. переименование собственности

Для обоих этих элементов компилятору требуется один и тот же набор информации, чтобы сделать это правильно. Это необходимо:

  • Подробная информация о каждой ссылке на ваш код — как в самом коде, так и о ссылках за пределами вашего скомпилированного кода.
  • Информация о том, какие внешние библиотеки, символы или фрагменты кода использует скомпилированный код.

Зная эти две части информации, компилятор может безопасно переименовывать общедоступные/глобальные свойства и переменные, а также полностью исключать код, который никогда не используется.

Переход на ADVANCED_OPTIMIZATIONS может потребовать много работы, но он также может принести большие выгоды в размере кода и производительности. Советы, которые помогут в этом процессе:

  • Прочитайте раздел На что обратить внимание официального документация.
  • Ознакомьтесь с часто задаваемыми вопросами в проекте компилятора, чтобы получить советы по отладка скомпилированного кода
  • Используйте warning_level=VERBOSE. Хотя он выдает больше предупреждений, он помогает определить такие вещи, как отсутствующие свойства, которые часто являются причиной неработающего кода.
  • Задавайте много вопросов
person Chad Killingsworth    schedule 09.04.2013

Вы можете использовать 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

person John    schedule 11.04.2013