2016-07-28 10 views
9

मेरी प्रोजेक्ट में नोड निर्भरता है जो एक पर्यावरण परिवर्तनीय सेट पर निर्भर करता है, कोड const KEY = process.env.SOME_KEY के रूप में कुछ आसान है। मैं समझता हूं कि प्रतिक्रिया-मूल के पारंपरिक पर्यावरण चर के लिए कोई समर्थन नहीं है।प्रतिक्रिया-मूल कस्टम निर्भरता पर पर्यावरण चर

इस आवश्यकता को पूरा करने के लिए क्या विकल्प हैं और यह कोड काम करते हैं? मान लीजिए कि मेरे पास निर्भरता के कोड पर नियंत्रण नहीं है।

+0

क्या आपने इसके साथ प्रयास किया है? [प्रतिक्रिया-मूल-कॉन्फ़िगरेशन] (https://www.npmjs.com/package/react-native-config) – LuisPinto

+0

@LuisPinto ठीक है जब आपके पास कोड पर नियंत्रण होता है, तो मैं नहीं करता हूं। – enapupe

उत्तर

1

समाधान बहुत सीधे आगे है, आपको एक कस्टम बेबेल ट्रांसफॉर्मर के साथ जाना चाहिए जो पारदर्शी चरण के दौरान वास्तविक एनवी मानों के साथ आपके कोड के भीतर सभी process.env. कॉलों को प्रतिस्थापित करेगा (उस चरण के दौरान पर्यावरणीय चरों तक पहुंच है)। ट्रांसफॉर्म भी आपके ऐप की निर्भरताओं पर लागू होते हैं जिसका अर्थ है कि आप वास्तव में इसे बदलने वाले तृतीय पक्ष कोड w/o में निरंतर संशोधन लागू कर सकते हैं।

आदेश यह करने के लिए, आपको पहले एक .babelrc फ़ाइल नीचे एक की तरह बनाना चाहिए और अपनी परियोजना की जड़ में रखें:

{ 
    "presets": ["react-native"], 
    "plugins": [ 
    "transform-inline-environment-variables" 
    ] 
} 

एक बार यह हो, जाओ और NPM babel-preset-react-native और babel-plugin-transform-inline-environment-variables स्थापित करें।

अंत में, react-native start (मूल रूप से पैकेजर को पुनरारंभ करें) को पुन: चालू करें और आपकी सभी प्रक्रियाएं .env कॉल प्रतिस्थापित की जाएंगी।

+0

धन्यवाद। मुझे http://stackoverflow.com/a/37823398/1666071 में एक ही जवाब मिला। यदि आप थोड़ा और विस्तार कर सकते हैं और आरएन सेट NODE_ENV के तरीके के कारण किए जाने वाले कामकाज के बारे में समझा सकते हैं, तो मैं आपको जवाब चुनने के लिए तैयार हूं। – enapupe

+1

इसके साथ जुड़े उल्लिखित मुद्दे और पीआर को मास्टर में विलय कर दिया गया है और इसे काम करने के लिए यहां वर्णित लोगों के अलावा मुझे कोई अतिरिक्त कदम नहीं करना पड़ेगा। –

+0

यदि आप रखरखाव योग्य ऐप्स का आनंद लेते हैं तो मेरी निजी सलाह बेबेल से बचने के लिए है। –

संबंधित मुद्दे