Reactネイティブアプリをストアにデプロイする前にconsole.log()
呼び出しを削除する必要がありますか?console.log()
呼び出しを行うと、パフォーマンスやその他の問題が発生しますか?コードに保持されていますか?
タスクランナーでログを削除する方法はありますか(GruntやGulpなどのWeb関連のタスクランナーと同様の方法で)?開発/デバッグ/テスト段階ではまだ必要ですが、本番環境では必要ありません。
ありがとう!
ベストプラクティスは次のようなステートメントでデバッグコードをラップすることであると考えています...
if(__DEV__){
console.log();
}
この方法では、パッケージャーまたはエミュレーター内で実行している場合にのみ実行されます。詳細はこちら... https://facebook.github.io/react-native/docs/performance#using-consolelog-statements
まあ、あなたはいつでも次のようなことをすることができます:
if (!__DEV__) {
console.log = () => {};
}
したがって、console.log
がtrueでなくなるとすぐに、すべての__DEV__
が無効になります。
Babelトランスパイラーは、次のプラグインを使用してconsole
ステートメントを削除できます。
npm i babel-plugin-transform-remove-console --save-dev
.babelrcを編集します。
{
"env": {
"production": {
"plugins": ["transform-remove-console"]
}
}
}
また、console
ステートメントはコードから削除されます。
リモートデバッグを行っていない場合は、__ DEV__ === trueであってもログに記録する必要がないため、次のオプションが適切であることがわかりました。
実際、特定のバージョンのRN/JavaScriptCore/etcが、ログを記録すると(文字列だけでも)ほぼ停止することがわかりましたが、ChromeのV8エンジンの場合はそうではありません。
// only true if remote debugging
const debuggingIsEnabled = (typeof atob !== 'undefined');
if (!debuggingIsEnabled) {
console.log = () => {};
}
Sentry
を使用して例外を追跡すると、本番環境ではconsole.log
が自動的に無効になりますが、デバイスからのログの追跡にも使用されます。したがって、歩哨の例外の詳細(パンくずリスト)で最新のログを確認できます。