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