रनटाइम के दौरान उत्पादन बनाम विकास प्रतिक्रिया का पता लगाना


108

क्या यह पता लगाना संभव है कि रिएक्ट का वर्तमान संस्करण रनटाइम पर विकास या उत्पादन है? मैं ऐसा कुछ करना चाहता हूं:

if (React.isDevelopment) {
  // Development thing
} else {
  // Real thing
}

जवाबों:


175

यह आपके बिल्ड टूल के साथ चीजों को करने के नोड तरीके का सबसे अच्छा अनुकरण करता है - वेबपैक, ब्राउजिंग - एक्सपोज़िंग द्वारा process.env.NODE_ENV। आमतौर पर, आपने इसे "प्रोडक्शन" को प्रोड्यूस और "डेवलेपमेंट" (या अपरिभाषित) देव में सेट किया होगा।

तो आपका कोड बन जाता है:

if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') {
    // dev code
} else {
    // production code
}

के लिए यह सेट करने के तरीके, देख envify या webpack में पर्यावरण पर निर्भर चर पासिंग


यह मेरे लिए काम करता है, एक बार मैंने स्थापित किया था browserifyऔर envify
pfhayes

4
process is not definedग्राहक पर।
trusktr

5
आपको वेबपैक जैसे बिल्ड टूल का उपयोग करना होगा।
डेविड एल वॉल्श

9
यदि आप create-react-app का उपयोग कर रहे हैं, तो process.env.NODE_ENVविकास मोड में "विकास" होगा।
जोसेफ 238 16:27

3
@ Joseph238 की टिप्पणी में जोड़ना - जब क्रिएट-रिएक्शन-ऐप का उपयोग process.env.NODE_ENVकिया जाता है, तो आपके लिए परिभाषित किया जाएगा और आपके ऐप में कहीं भी इसकी पहुंच होगी। विस्तार के लिए रिएक्ट प्रलेखन देखें
शांग चेंग

9

मैं एक सहायक फ़ाइल का उपयोग करता हूं (टाइपस्क्रिप्ट में):

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())
{
    ...
}

3

मैं इसे index.html से एक्सेस करना चाहता था और एक समाधान चाहता था जिसमें वेबपैक को बाहर करना या अतिरिक्त मॉड्यूल के साथ इसे कॉन्फ़िगर करना शामिल नहीं था और मैं इसके साथ आया था।

सूत्रों का कहना है कि डेविड का जवाब ऊपर है और HTML फ़ाइल में पर्यावरण चर का उपयोग करने के लिए ऐप-रिएक्शन-ऐप प्रलेखन है

if ( ! '%NODE_ENV%' || '%NODE_ENV%' === 'development') {
  // dev code
} else {
  // production code    
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.