Angular консольный журнал только в среде разработки
В нашем Angular приложении (с Angular CLI) мы используем несколько операторов console
. Существует ли глобальный способ обнаружения среды, а затем отображать console.log
в наших компонентах и услугах только при разработке?
Что я имею в виду под глобальным путем - я знаю, что мы можем использовать что-то вроде:
if (!environment.production) {
console.log(this.reviewTasksList);
}
Но используя этот код каждый раз, когда мы должны console.log
(вместе с необходимым импортом для получения переменной environment
), наш код станет своеобразным подробным.
Я хочу знать, есть ли способ:
- быстрее получить доступ к среде.
- Возможно, удалите все журналы консоли во время сборки prod.
Или лучшее решение здесь - создать службу регистрации и выполнить всю проверку среды внутри нее?
Я не хочу, чтобы на размер моего пакета влияли операторы отладки и службы.
Ответы
Ответ 1
Вы можете использовать isDevMode() или ваш environment.production
чтобы проверить, работает ли код в режиме разработки или в производственном режиме.
Я думаю, что служба регистрации будет хорошей идеей, а затем зарегистрирует другую службу регистрации в поставщиках в зависимости от режима.
Смотрите также https://github.com/angular/angular/pull/14308
Ответ 2
В качестве альтернативы вы можете использовать общий сервис для достижения этого
this.loggerService.log(this.reviewTasksList);
где, как и в вашем сервисе, вы можете использовать
log(text: string){
if (!environment.production) {
console.log(text)
}
}
Ответ 3
Это перезаписывает все журналы консоли с пустой функцией.
if (environment.production) {
enableProdMode();
window.console.log = function () { }; // disable any console.log debugging statements in production mode
// window.console.error = function () { };
}
Ответ 4
что, если вы переопределите console.log, если он не в режиме dev?
if (! isDevMode()){
console.log = (...args)=>{}
}
Ответ 5
Я создал решение, которое может иметь различные настройки для управления журналами консоли в зависимости от среды, в которой вы запускаете приложение. Вы можете определить настройку по вашему выбору в среде разработки и другую настройку для продакшен среды. установить @sedeh/smart-service и в свой компонент приложения внедрить SmartConsoleService и передать в него свои настройки. остальное все сделано для вас. Любой консольный журнал будет обрабатываться в соответствии с вашей спецификацией. Оформить заказ Smart-console и сообщить мне, есть ли что-то еще, что нужно включить в него.