Удаление 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, но также использует его для отслеживания журналов с устройства. Таким образом, вы можете увидеть последние журналы в деталях исключения часового (хлебные крошки).