Có thể phát hiện phiên bản hiện tại của React là phát triển hay sản xuất trong thời gian chạy không? Tôi muốn làm điều gì đó như sau:
if (React.isDevelopment) {
// Development thing
} else {
// Real thing
}
Câu trả lời:
Điều này được thực hiện tốt nhất để mô phỏng cách thức hoạt động của Node với công cụ xây dựng của bạn - webpack, Browserify - bằng cách hiển thị process.env.NODE_ENV
. Thông thường, bạn sẽ đặt nó thành "production" trong sản phẩm và "phát triển" (hoặc không xác định) trong dev.
Vì vậy, mã của bạn trở thành:
if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') {
// dev code
} else {
// production code
}
Để biết cách thiết lập, hãy xem envify hoặc Truyền các biến phụ thuộc vào môi trường trong webpack
process is not defined
trên máy khách.
process.env.NODE_ENV
sẽ là "development" trong chế độ phát triển.
process.env.NODE_ENV
sẽ được xác định cho bạn và bạn có quyền truy cập vào nó ở bất kỳ đâu trong ứng dụng của mình. Xem tài liệu React để biết thêm chi tiết .
Tôi sử dụng tệp trợ giúp (trong Typecript):
import process from "process";
const development: boolean = !process.env.NODE_ENV || process.env.NODE_ENV === 'development';
export default function isDev(): boolean
{
return development;
}
Sau đó, ở những nơi khác tôi sử dụng nó như thế này:
import isDev from "./helpers/DevDetect";
if (isDev())
{
...
}
Tôi muốn truy cập vào cái này từ index.html và muốn một giải pháp không liên quan đến việc gỡ bỏ webpack hoặc định cấu hình nó với các mô-đun bổ sung và tôi đã nghĩ ra điều này.
Các nguồn là câu trả lời của David ở trên và tài liệu tạo-phản ứng-ứng dụng để sử dụng các biến môi trường trong tệp html
if ( ! '%NODE_ENV%' || '%NODE_ENV%' === 'development') {
// dev code
} else {
// production code
}
browserify
vàenvify
.