2017-03-18 5 views
0

Je sais que console.log() affectera le préf en mode natif sous release, ceci est très clair dans les docs, mais qu'en est-il de console.debug() et console.warn()?Est-ce que console.debug() affecte la performance native en mode release?

Sinon, quelle est la meilleure façon d'imprimer un message de débogage et de ne pas avoir à les supprimer toutes les fois que nous passons en version? Puisque nous aurons besoin de ces messages en mode dev.

+1

La meilleure façon à mon avis est d'écrire un emballage pour chaque sortie de journalisation. Ceci peut ensuite être utilisé pour commuter des flux de sortie en production avec, par exemple, une commande telnet/ssh sur un port de débogage d'écoute. Cela vous permet d'activer/désactiver dynamiquement le déboguage sur un système en cours d'exécution et de permettre la journalisation à distance et bien d'autres fonctionnalités. – Maggistro

Répondre

2

Si vous consultez la documentation, il y a quelques instructions sur l'utilisation du plugin babel pour supprimer automatiquement tous les appels de la console. * Dans les versions de version.

Selon lui [1], il vous suffit d'installer le plug-in: 1)

npm i babel-plugin-transform-remove-console --save 

2) Ajouter dans votre fichier .babelrc:

{ 
    "env": { 
    "production": { 
     "plugins": ["transform-remove-console"] 
    } 
    } 
} 

1 - https://facebook.github.io/react-native/docs/performance.html#using-console-log-statements

0

Il existe des plugins webpack conçus pour supprimer des types spécifiques d'instructions de console, selon la façon dont vous les configurez, de sorte que vous pouvez, par exemple, supprimer seulement console.debug déclarations mais la dernière fois que j'ai essayé, je n'ai pas eu beaucoup de chance. Si vous créez une application React JS avec une version récente de React, par exemple 15.x, qui a été créée avec create-react-app et que vous l'éjectez avec npm run eject, vous disposez de deux configurations de pack Web distinctes. Vous pouvez modifier la configuration de production (/config/webpack.config.prod.js) et de supprimer toute déclaration de la console de votre version de production en modifiant la configuration UglifyJsPlugin existant dans la section plugins afin qu'il ressemble à ceci:

new webpack.optimize.UglifyJsPlugin({ 
    compress: { 
    warnings: false, 
    // Disabled because of an issue with Uglify breaking seemingly valid code: 
    // https://github.com/facebookincubator/create-react-app/issues/2376 
    // Pending further investigation: 
    // https://github.com/mishoo/UglifyJS2/issues/2011 
    comparisons: false, 

    // Drop console statements 
    drop_console: true,   // <--- ADD THIS 
    }, 
    output: { 
    comments: false, 
    }, 
    sourceMap: true, 
}), 

C'est tout ce que vous avez besoin à faire ... mais encore une fois, cela va supprimer toutes les déclarations console, pas seulement console.debug