1

Google Closure Compiler является мощным компилятор и Minifier для JS, который дает много вариантов оптимизации, таких как переименование переменных, удаляя мертвые коды, разрушаясь объявления переменных, переписывание структуры потока управления и т.д.Closure Compiler: Как отделить и контролировать прохождение компиляции/минимизации?

То, что я хочу отдельно применять одну или некоторые из этих оптимизаций на входной JS-программе. Например, я могу переименовать переменные с короткими именами, но не удалять мертвые коды. Как я могу достичь такого детального контроля прохождения компиляции? Является ли исходный код CC открытым интерфейсом для этой настройки, или я должен написать свой собственный пропуск (если так, как я должен начать?).

Функции командной строки предлагают несколько вариантов управления компиляцией, но недостаточно для того, чтобы соответствовать тому, что я хочу выше. Поскольку исходный код немного сложный, и можно найти небольшую подробную конструкторскую документацию, я действительно застрял здесь. Любые идеи были бы оценены, спасибо :)

ответ

2

Посмотрите на DefaultPassConfig. Этот класс перечисляет все проходы, которые выполняются во время компиляции, на основе того, какие параметры заданы в CompilerOptions. Некоторые из CompilerOptions можно контролировать из командной строки, но мы обычно стараемся, чтобы компилятор был относительно простым и простым в использовании, и не просить пользователей принимать решения о связке разных флагов компилятора. Кроме того, есть несколько проходов, которые на самом деле увеличивают размер, но они делают это таким образом, что это облегчает последующий переход, чтобы впоследствии уменьшить его.

Конечно, если вы просто экспериментируете с компилятором или пытаетесь понять, как это работает, вы можете включать и выключать любые проходы, которые вы хотите, либо путем добавления новых флагов, либо просто изменения DefaultPassConfig напрямую.

+3

Многие из флагов контролируются [CompilationLevel.java] (https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/CompilationLevel.java). Иногда их легче модифицировать. –

+0

Кстати, несколько членов команды обычно довольно часто проверяют тег «google-close-compiler» и список рассылки Stack Overflow, поэтому нет необходимости размещать один и тот же вопрос в обоих местах. – MatrixFrog