Ich bin ziemlich neu in der Welt der Verwendung solcher Build Tools wie Webpack und seine Verwandten, also vielleicht ist diese Frage ein wenig noobish, aber bitte verstehen Sie mich.Umgebungsvariable mit Webpack auf Dev und Produktion
Hintergrund: Ich entwickle eine Client-Seite Web-App (mit reactjs + redux) und mit Webpack als mein Build-Tool und dev-Server Loader. Im Moment muss ich einige Codezeilen nur in der Entwicklungsumgebung erstellen (Logging und so). So sah ich über das Netz die Verwendung von webpack.DefinePlugin
Plugin die process.env.NODE_ENV
Variable zu setzen, und der Code ist wie folgt:
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
})
]
Dann, wenn die NODE_ENV
Varibale nicht auf meinem Rechner gesetzt (was zur Zeit nicht ist) es automatisch auf Entwicklung gesetzt. Habe ich recht?
Was ist mit der Produktionsmaschine? Muss ich diese Umgebungsvariable in der /etc/environment
Datei auf "Produktion" setzen?
Dann eine andere Frage ist, wie Webpack weiß, was ist der NODE_ENV, wenn ich die App diene? Ist es kompiliert, wenn ich den Build auf der Produktionsmaschine mache und in die gebaute bundle.js setze?()
Eine weitere Frage ist, wie kann ich Funktionen in der Produktion oder Entwicklungsumgebung aktivieren/deaktivieren? nur tun, ein, wenn die Bedingung Anweisung wie folgt:
if(process.env.NODE_ENV == 'development'){
console.log('this is visible in development');
}
Und letzten, wenn dies ist, was WebPACK wirklich tut, ist es dieses Stück Code zu dem eingebauten bundle.js transpiling? Wenn ja, ist es für den Endbenutzer sichtbar? hat das etwas damit zu tun?
Hoffe, es ist nicht zu viel, danke ein Haufen!
großartig! und was ist mit dem Verstecken dieses Codes? Ist es möglich? Ich möchte nicht, dass der Benutzer sehen kann, was in diesem 'if' steckt? –
Ich redigierte Antwort mit Erklärung, wie man das versteckt. – Everettss