Использование функций журнала компилятора закрытия



У меня есть API ведения журналов, который я хочу открыть для некоторого внутреннего кода JS. Я хочу иметь возможность использовать этот API для ведения журнала, но только при создании отладочной сборки. Сейчас он у меня частично работает. Он регистрирует только отладочные сборки, но вызовы этого API все еще находятся в коде, когда есть обычная сборка. Я хотел бы, чтобы компилятор закрытия удалял этот по существу мертвый код, когда я компилирую с goog.DEBUG = false.

Определение журнала:

goog.provide('com.foo.android.Log');
com.foo.Log.e = function(message){
    goog.DEBUG && AndroidLog.e(message);
}
goog.export(com.foo.Log, "e", com.foo.Log.e);

AndroidLog — это объект Java, предоставляемый веб-просмотру, в котором он будет работать, и должным образом экстернированный следующим образом:

var AndroidLog = {};

/**
 * Log out to the error console
 * 
 * @param {string} message The message to log
 */
AndroidLog.e = function(message) {};

Затем в моем коде я могу использовать:

com.foo.Log.e("Hello!"); // I want these stripped in production builds

Мой вопрос таков: Как я могу предоставить этот API, использовать этот API во всем своем коде, но затем удалить все вызовы этого API, если они не скомпилированы с goog.DEBUG = true? Прямо сейчас моя кодовая база раздувается кучей вызовов Log API, которые никогда не вызываются. Я хочу удалить.

Спасибо!

12
задан Sky Kelsey 21 March 2012 в 01:17
поделиться