Jestem całkiem nowy w świecie używania takich narzędzi do budowy, jak Webpack i jego krewni, więc może to pytanie jest trochę nieobliczalne, ale proszę mnie zrozumieć.Zmienna środowiskowa z pakietem internetowym na temat dev i produkcji
background: Zajmuję się tworzeniem aplikacji sieciowej po stronie klienta (przy użyciu reaktsy + redux) i korzystam z pakietu internetowego jako mojego narzędzia do budowania i programu ładującego dla serwera dev. W tej chwili muszę utworzyć kilka linii kodu tylko w środowisku deweloperów (logowanie i inne). Więc widziałem nad siatką wykorzystanie webpack.DefinePlugin
wtyczki ustawić zmienną process.env.NODE_ENV
a kod jest tak:
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
})
]
Następnie jeśli NODE_ENV
varibale nie jest ustawiony na moim komputerze (który nie jest w tej chwili) to automatycznie ustawiony na rozwój. Czy mam rację?
Co z maszyną produkcyjną? czy muszę ustawić tę zmienną env na "production" w pliku /etc/environment
?
Kolejne pytanie brzmi, w jaki sposób pakiet internetowy wie, jaki jest NODE_ENV, gdy obsługuję aplikację? czy jest skompilowany, gdy wykonuję kompilację na maszynie produkcyjnej i umieszczam ją w wbudowanym bundle.js? ($ webpack --progress -p
)
Kolejne pytanie dotyczy sposobu włączania/wyłączania funkcji w środowisku produkcyjnym lub programistycznym? po prostu zrobić if warunek tak:
if(process.env.NODE_ENV == 'development'){
console.log('this is visible in development');
}
I ostatni, jeśli to jest to, co WebPACK naprawdę, jest to transpiling ten kawałek kodu do wbudowanych bundle.js? jeśli tak, to jest widoczne dla użytkownika końcowego? czy to ma coś wspólnego z tym?
Mam nadzieję, że nie za bardzo, dziękuję!
świetnie! a co z ukrywaniem tego kodu? jest to możliwe? Nie chcę, aby użytkownik mógł zobaczyć, co dzieje się w tym 'if'? –
Edytowałem odpowiedź z wyjaśnieniem, jak to ukryć. – Everettss