2013-04-09 3 views
0

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

Есть ли какие-либо более мелкие отдельные флаги для перехода к опциям компилятора google, чтобы включить отдельные функции флага 'ADVANCED_OPTIMIZATIONS'?

ответ

0

Короткий ответ «нет».

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

  1. мертвый код устранение
  2. свойство переименования

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

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

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

Перемещение на ADVANCED_OPTIMIZATIONS может быть большой работой, но оно также может производить большие выигрыши в размере и производительности кода. Советы по оказанию помощи:

  • Прочитать и понять раздел официальной документации What to watch out for.
  • Отметьте FAQ в проекте компилятора для подсказок по отладке скомпилированного кода
  • Использовать warning_level=VERBOSE. Хотя он вызывает больше предупреждений, он помогает идентифицировать такие вещи, как недостающие свойства, которые часто являются виновниками в сломанном коде.
  • Задать много вопросов
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

Смежные вопросы