Tôi khá mới với thế giới sử dụng các công cụ xây dựng như Webpack và người thân của nó, vì vậy có thể câu hỏi này hơi ngớ ngẩn nhưng hãy hiểu tôi.Biến môi trường với webpack trên dev và sản xuất
nền: Tôi đang phát triển ứng dụng web phía khách hàng (sử dụng reactjs + redux) và sử dụng webpack làm công cụ xây dựng và trình tải dev-server của tôi. Ngay bây giờ tôi phải thực hiện một số dòng mã chỉ trong môi trường dev (đăng nhập và các công cụ). Vì vậy, tôi thấy trên mạng việc sử dụng webpack.DefinePlugin
plugin để đặt biến process.env.NODE_ENV
và mã là như thế này:
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
})
]
Sau đó, nếu các varibale NODE_ENV
không được thiết lập trên máy tính của tôi (mà không phải là ở thời điểm hiện tại) nó tự động thiết lập để phát triển. Tôi có đúng không?
Còn máy sản xuất thì sao? tôi có cần đặt biến env này thành 'sản xuất' trong tệp /etc/environment
không?
Sau đó, một câu hỏi khác là cách webpack biết NODE_ENV là gì khi tôi phân phát ứng dụng? liệu nó có được biên dịch khi tôi thực hiện việc xây dựng trên máy sản xuất và đặt trong bundle.js được xây dựng không? ($ webpack --progress -p
)
Một câu hỏi khác là làm cách nào để bật/tắt tính năng trong môi trường sản xuất hoặc phát triển? chỉ cần thực hiện một tuyên bố nếu điều kiện như thế này:
if(process.env.NODE_ENV == 'development'){
console.log('this is visible in development');
}
Và điều cuối cùng, nếu đây là những gì webpack thực sự làm, thì nó sẽ chuyển đoạn mã này vào bundle.js được xây dựng? nếu vậy, nó có thể nhìn thấy người dùng cuối phải không? có gì để làm với điều đó không?
Hy vọng nó không nhiều, cảm ơn!
tuyệt vời! và những gì về ẩn mã này? Tôi không muốn người dùng có thể thấy những gì bên trong 'if' này? –
Tôi đã trả lời câu trả lời với giải thích cách ẩn nội dung này. – Everettss