Удаление console.log из приложения React Native
Должны ли вы удалить вызовы console.log()
перед развертыванием приложения React Native в магазинах? Существуют ли какие-либо проблемы с производительностью или другими проблемами, если существуют вызовы console.log()
в коде?
Есть ли способ удалить журналы с помощью какого-либо задачи (аналогично веб-связанным задачам, таким как Grunt или Gulp)? Мы все еще хотим их на этапе разработки/отладки/тестирования, но не в производстве.
Спасибо!
Ответы
Ответ 1
считают, что лучшая практика заключается в том, чтобы обернуть ваш код отладки в таких выражениях, как...
if(__DEV__){
console.log();
}
Таким образом, он запускается только при запуске в пакете или эмуляторе. Больше информации здесь...
https://github.com/facebook/react-native/tree/master/packager#pathtomodulenamemapbundle-query-params
Ответ 2
Хорошо, вы всегда можете сделать что-то вроде:
if (!__DEV__) {
console.log = () => {};
}
Таким образом, каждый console.log
был бы признан недействительным, как только __DEV__
не является истинным.
Ответ 3
Babel Transpiler может удалить console
операторы для вас с помощью следующего плагина:
npm i babel-plugin-transform-remove-console --save-dev
Изменить .babelrc:
{
"env": {
"production": {
"plugins": ["transform-remove-console"]
}
}
}
И console
операторы удаляются из вашего кода.
источник: https://hashnode.com/post/remove-consolelog-statements-in-production-in-react-react-native-apps-cj2rx8yj7003s2253er5a9ovw
Ответ 4
Я считаю, что следующее является хорошим вариантом, так как нет необходимости регистрироваться, даже если __DEV__ === true, если вы также не используете удаленную отладку.
На самом деле, я обнаружил, что некоторые версии RN/JavaScriptCore/etc практически не останавливаются при ведении журнала (даже просто строк), что не относится к движку Chrome V8.
// only true if remote debugging
const debuggingIsEnabled = (typeof atob !== 'undefined');
if (!debuggingIsEnabled) {
console.log = () => {};
}
Проверьте, включена ли удаленная отладка JS
Ответ 5
Использование Sentry
для отслеживания исключений автоматически отключает console.log
в производственной console.log
, но также использует его для отслеживания журналов с устройства. Таким образом, вы можете увидеть последние журналы в деталях исключения часового (хлебные крошки).