2016-11-18 25 views
8

यह मेरी पहली बार एक कोणीय 2 अनुप्रयोग को तैनात करने की कोशिश कर रहा है। मैं एक एपीआई एंडपॉइंट का यूआरएल सेट करना चाहता हूं, और मैं इसे हर पर्यावरण में अलग करना चाहता हूं।कोणीय 2 - कोणीय-क्ली: निर्माण पर वैश्विक चर सेट करें

क्या एनजी बिल्ड या कोई अन्य उपकरण बनाने का कोई तरीका है जो तैनाती से पहले मेरे लिए यह सेट करने की अनुमति देगा?

उत्तर

8
कोणीय CLI उपकरण के साथ

आप विभिन्न वातावरण को कॉन्फ़िगर कर सकते हैं।

ng build दोनों निर्माण लक्ष्य (--target=production या --target=development) और एक पर्यावरण फ़ाइल कि निर्माण (--environment=dev या --environment=prod) के साथ इस्तेमाल किया जा करने के लिए निर्दिष्ट कर सकते हैं। डिफ़ॉल्ट रूप से, विकास लक्ष्य लक्ष्य और पर्यावरण का उपयोग किया जाता है।

निर्धारित करने के लिए जो पर्यावरण फ़ाइल प्रयोग किया जाता है प्रयोग किया जाता मानचित्रण कोणीय cli.json में पाया जा सकता:

"apps": { 
    "environmentSource": "environments/environment.ts", 
    "environments": { 
    "dev": "environments/environment.ts", 
    "prod": "environments/environment.prod.ts" 
    } 
} 

ये विकल्प भी की सेवा आदेश पर लागू होते हैं। यदि आप पर्यावरण के लिए कोई मूल्य नहीं पारित करते हैं, तो यह उत्पादन के लिए dev और प्रोड के लिए डिफ़ॉल्ट होगा।

तुम भी देव और prod के अलावा अन्य अपने स्वयं के env फ़ाइलें जोड़ सकते हैं।

फिर, अपने कोड में, आप मुख्य में डिफ़ॉल्ट एक की तरह एक साधारण जांच कर सकते हैं।टीएस फ़ाइल:

if (environment.production) { 
    enableProdMode(); 
} 

अधिक जानकारी के लिए अपने दस्तावेज़ों में build targets and environment files अनुभाग देखें।

पीएस: Here's a similar question, आपको वहां भी उपयोगी उत्तर मिल सकते हैं।

+0

मेर्सी ब्रेटल मैं एक .ts फ़ाइल जैसे पर्यावरण से पर्यावरण का संदर्भ कैसे दे सकता हूं? मुझे "पर्यावरण परिभाषित नहीं किया जा रहा है"। क्या इसे आयात करने का कोई विशेष तरीका है? – blgrnboy

+0

एचएम, आपको एक कदम याद करना होगा। 1) जांचें कि आपके पास वातावरण हैं या नहीं: { "स्रोत": "वातावरण/पर्यावरण .ts", "dev": "वातावरण/पर्यावरण।", "प्रोड": "वातावरण/पर्यावरण.प्रोड .ts " } 'आपके' कोणीय-cli.json' में। 2) जांचें कि क्या आपके पास आपके 'src/वातावरण /' निर्देशिका में फ़ाइलें हैं। 3) क्या आप 'एनजी बिल्ड' को '--environment = dev' ध्वज के साथ चलाते हैं? 4) जांचें कि क्या आपकी पर्यावरण.टी फाइल वास्तव में निरंतर निर्यात करती है: 'निर्यात कॉन्स पर्यावरण = {उत्पादन: झूठा};' पीएस: मोल्क ब्रैटल :) –

+0

5) जांचें कि क्या आप इस जगह पर आयात विवरण खो रहे हैं आप इसका उपयोग कर रहे हैं: './environments/environment' से 'आयात {पर्यावरण}; ' –

6

हां, और यह वास्तव में काफी सुविधाजनक है। src/environments/ निर्देशिका पर एक नज़र डालें। आपके पास कम से कम 2 फाइलें हैं, जिनमें से एक environment.ts है। इसे एक न बदलें। इसके बजाय आपको इस निर्देशिका में अन्य फाइलों में अपनी अलग-अलग एनवी-संबंधित कॉन्फ़िगरेशन डालना चाहिए, उदा। environment.prod.ts। वर्तमान वातावरण निर्माण के दौरान इन के ऊपर लिख देगा के लिए

फ़ाइल सामग्री:

सब कुछ अच्छी तरह से src/environments/environment.ts में टिप्पणी डाल से समझाया गया है।

देव वातावरण जिसमें environment.ts उपयोग किए जाने वाले निर्माण को सिस्टम डिफ़ॉल्ट, लेकिन यदि आप

ng build --env=prod तो environment.prod.ts स्थान पर किया जाएगा।

angular-cli.json में कौन सी फ़ाइल को एनएनवी मानचित्र मिल सकता है।

तो आपको सामान्य टाइपस्क्रिप्ट आयात का उपयोग करके उस फ़ाइल में परिभाषित कॉन्स को आयात करना होगा, उदा।

import { environment } from '../../environments/environment'; 

तो फिर तुम यह सेवा में सेट कर सकते हैं:

@Injectable() 
export class SettingsService { 
    public environment = environment; 
} 

और अब आप उपयोग अन्य स्थानों में इस तरह के सेवा इंजेक्षन, किसी अन्य सेवा की तरह;)

+0

मैं एक .ts फ़ाइल जैसे पर्यावरण से पर्यावरण का संदर्भ कैसे दे सकता हूं? मुझे "पर्यावरण परिभाषित नहीं किया जा रहा है"। क्या इसे आयात करने का कोई विशेष तरीका है? – blgrnboy

+2

मैंने इसे –

+0

खाते में ले जाने के लिए अपना उत्तर अपडेट कर दिया है, किसी भी सेवा के माध्यम से पर्यावरण में मध्यस्थता का लाभ क्या है, इसके बजाय मुझे इसे कहीं से भी सीधे एक्सेस करने के बजाय? –

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