У меня есть 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, которые никогда не вызываются. Я хочу удалить.
Спасибо!