क्या यह पता लगाना संभव है कि रिएक्ट का वर्तमान संस्करण रनटाइम पर विकास या उत्पादन है? मैं ऐसा कुछ करना चाहता हूं:
if (React.isDevelopment) {
// Development thing
} else {
// Real thing
}
जवाबों:
यह आपके बिल्ड टूल के साथ चीजों को करने के नोड तरीके का सबसे अच्छा अनुकरण करता है - वेबपैक, ब्राउजिंग - एक्सपोज़िंग द्वारा process.env.NODE_ENV
। आमतौर पर, आपने इसे "प्रोडक्शन" को प्रोड्यूस और "डेवलेपमेंट" (या अपरिभाषित) देव में सेट किया होगा।
तो आपका कोड बन जाता है:
if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') {
// dev code
} else {
// production code
}
के लिए यह सेट करने के तरीके, देख envify या webpack में पर्यावरण पर निर्भर चर पासिंग
process is not defined
ग्राहक पर।
process.env.NODE_ENV
विकास मोड में "विकास" होगा।
process.env.NODE_ENV
किया जाता है, तो आपके लिए परिभाषित किया जाएगा और आपके ऐप में कहीं भी इसकी पहुंच होगी। विस्तार के लिए रिएक्ट प्रलेखन देखें ।
मैं एक सहायक फ़ाइल का उपयोग करता हूं (टाइपस्क्रिप्ट में):
import process from "process";
const development: boolean = !process.env.NODE_ENV || process.env.NODE_ENV === 'development';
export default function isDev(): boolean
{
return development;
}
फिर कहीं और मैं इसे इस तरह से उपयोग करता हूं:
import isDev from "./helpers/DevDetect";
if (isDev())
{
...
}
मैं इसे index.html से एक्सेस करना चाहता था और एक समाधान चाहता था जिसमें वेबपैक को बाहर करना या अतिरिक्त मॉड्यूल के साथ इसे कॉन्फ़िगर करना शामिल नहीं था और मैं इसके साथ आया था।
सूत्रों का कहना है कि डेविड का जवाब ऊपर है और HTML फ़ाइल में पर्यावरण चर का उपयोग करने के लिए ऐप-रिएक्शन-ऐप प्रलेखन है
if ( ! '%NODE_ENV%' || '%NODE_ENV%' === 'development') {
// dev code
} else {
// production code
}
browserify
औरenvify
।