उत्पादन मोड कैसे सक्षम करें?


182

मैं संबंधित प्रश्नों को पढ़ रहा था और मुझे यह पता चला , लेकिन मेरा सवाल यह है कि मैं विकास से उत्पादन मोड में कैसे बदल सकता हूं। यहां बताए गए तरीकों के बीच कुछ अंतर हैं

कंसोल में मैं देख सकता हूं ....Call enableProdMode() to enable the production mode., हालांकि, मुझे यकीन नहीं है कि मुझे किस प्रकार का फोन करना चाहिए।

क्या कोई इस सवाल का जवाब दे सकता है?


मैंने पाया कि यह वेबपैक 2+ एंगुलर 2 और टाइपस्क्रिप्ट का उपयोग करते हुए पागल हो रहा है, एक सरल समाधान बनाया गया है: github.com/Sweetog/yet-another-angular2-boilerplate
ब्रायन ओग्डेन

जवाबों:


211

आप इसे आयात करके और फंक्शन को क्रियान्वित करके (बूटस्ट्रैप को कॉल करने से पहले) सक्षम करते हैं:

import {enableProdMode} from '@angular/core';

enableProdMode();
bootstrap(....);

लेकिन यह त्रुटि संकेतक है कि आपके बाइंडिंग में कुछ गड़बड़ है, इसलिए आपको इसे खारिज नहीं करना चाहिए, लेकिन यह पता लगाने की कोशिश करें कि ऐसा क्यों हो रहा है।


यदि आप टाइपस्क्रिप्ट का उपयोग नहीं कर रहे हैं, तो कैसे करें? अगर मैं सिर्फ ng.platform.browser.bootstrap (...) से पहले इस विधि को कॉल करता हूं तो मुझे यह त्रुटि मिलती है: enableProdMode परिभाषित नहीं है
डैनियल डुडास

2
@ दानिएलदास मैं es5 का उपयोग नहीं करता, लेकिन कोशिश करता ng.core.enableProdMode()
हूं

3
मेरा मानना ​​है कि "कोणीय 2 / कोर" अब "@ कोणीय / कोर" है। नीचे मेरा जवाब देखें।
adampasz

मैं Ionic2 का उपयोग कर रहा हूं। इस बूटस्ट्रैप को किस फाइल में कहा जाता है? जब मैं एक नमूना एप्लिकेशन उत्पन्न करता हूं जिसे ionic start test sidemenu --v2 --tsमैं देखता हूं app.tsलेकिन इस बूटस्ट्रैप फ़ंक्शन को कहां कहा जाता है?
ग्यूस

1
मैंने वैसा ही किया, लेकिन मुझे "सेटअप सेटअप के बाद प्रोडक्ट को सक्षम नहीं कर सकता" जैसा अपवाद मिल रहा है। किसी को भी इसे हल करने में मेरी मदद कर सकता है?
गौतम

81

एक कोणीय 2 अनुप्रयोग के लिए उत्पादन मोड को सक्षम करने का सबसे अच्छा तरीका है, कोणीय-क्ली का उपयोग करना और इसके साथ अनुप्रयोग का निर्माण करना ng build --prod। यह प्रोडक्शन प्रोफाइल के साथ एप्लिकेशन का निर्माण करेगा। कोणीय-क्ली का उपयोग करने से यह फायदा होता है कि हर समय कोड में फेरबदल किए बिना विकास मोड का उपयोग करने ng serveया ng buildविकसित करने में सक्षम होता है।


6
मैं Angular 6 का उपयोग कर रहा हूं और यह prod- मोड में बनाने के लिए बिल्ड --prod है। इस पृष्ठ पर आने वाले किसी भी नवागंतुकों के लिए बस यहां डाल रहे हैं।
Verbose

मुझे लगता है कि बिल्ड -प्रोड को isDMMode और enableProdMode को ध्यान में रखते हुए लागू किया गया है। इस उत्तर को उत्तर के रूप में चिह्नित किया जाना चाहिए
bubi

58

यह मेरे लिए काम किया, एंगुलर 2 (2.0.0-rc.1) की नवीनतम रिलीज का उपयोग करते हुए:

main.ts

import {enableProdMode} from '@angular/core';

enableProdMode();
bootstrap(....);

यहाँ उनके डॉक्स से फ़ंक्शन संदर्भ है: https://angular.io/api/core/enableProdMode



1
@ मुझे आश्चर्य है enableProdModeकि आपको यह बताने के लिए आधिकारिक कोणीय दस्तावेज़ीकरण नहीं है कि आप इसे कहाँ बुलाने वाले हैं।
दाई

55

जब मैंने कोणीय-क्ली का उपयोग करके एक नया प्रोजेक्ट बनाया। एक फाइल शामिल की गई थी जिसे environment.ts कहा जाता था। इस फ़ाइल के अंदर एक चर ऐसा है।

export const environment = {
  production: true
};

फिर main.ts में आपके पास यह है।

import './polyfills.ts';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { environment } from './environments/environment';
import { AppModule } from './app/';

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

platformBrowserDynamic().bootstrapModule(AppModule);

आप इसे एक गैर कोणीय-क्ली परियोजना में जोड़ सकते हैं, मैं मानूंगा, क्योंकि @ कोणीय / कोर से enableProdMode () आयात किया जा रहा है।


यह गैर-उत्पादों के निर्माण के लिए कैसे काम करता है? मुझे लगता है कि मामले में environment.ts को नजरअंदाज किया जाता है, तो क्या आपको मॉड्यूल आयात करने की कोशिश करते समय tsc संकलित त्रुटि नहीं मिलती है?
llasarov

@llasarov environment.ts सिर्फ एक कॉन्फ़िगरेशन फ़ाइल की तरह व्यवहार कर रहा है, जिसमें आप उत्पादन मोड चालू / बंद कर सकते हैं। Main.ts सिर्फ enableProdMode को कॉल करता है यदि इसका सही है, तो यह बिना किसी विशिष्ट बिल्ड प्रक्रिया के किया जा सकता है। आप यहां लॉगिंग का चयन भी कर सकते हैं, अगर logM डीबग कर रहा है तो आपकी कस्टम लॉगर सेवा एक विस्तृत स्टैकट्रेस कर रही है, बस एक लाइनर लॉगिंग कर रही है
NitinSingh


10

कोणीय 6.XX में उत्पादन मोड को सक्षम करने के लिए बस पर्यावरण फ़ाइल पर जाएं

इस रास्ते की तरह

आपका रास्ता: project>\src\environments\environment.ts

इससे बदलें production: false:

export const environment = {
  production: false
};

सेवा

export const environment = {
  production: true
};

यहां छवि विवरण दर्ज करें


8

विकास के समय के दौरान अधिकांश समय ठेस मोड की आवश्यकता नहीं होती है। इसलिए हमारा काम केवल इसे तब सक्षम करना है जब यह लोकलहोस्ट न हो

अपने ब्राउज़र में ' main.tsजहाँ आप अपने रूट को परिभाषित करते हैं AppModule:

const isLocal: boolean = /localhost/.test(document.location.host);
!isLocal && enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);

isLocalभी जैसे अन्य उद्देश्यों के लिए इस्तेमाल किया जा सकता है enableTracingके लिए RouterModuleदेव चरण के दौरान बेहतर डिबगिंग के लिए स्टैक ट्रेस।


6

जब एनजी बिल्ड कमांड का उपयोग किया जाता है, तो यह एनवायरनमेंट फाइल को अधिलेखित कर देता है

डिफ़ॉल्ट रूप से जब एनजी बिल्ड कमांड का उपयोग किया जाता है तो यह देव वातावरण सेट करता है

उत्पादन वातावरण का उपयोग करने के लिए, कमांड एनजी बिल्ड --env = प्रोडक्ट का उपयोग करें

यह उत्पादन मोड को सक्षम करेगा और स्वतः ही environment.ts फ़ाइल को अपडेट करेगा


1
यह कोणीय सीएलआई 6 में बदल गया था ng build --configuration=production(सीएलआई-जनित एंगुलर.जसन फ़ाइल का उपयोग करके डिफ़ॉल्ट रूप से)।
ढिलाई


4

टाइपस्क्रिप्ट उपयोग के लिए भी स्विच किए बिना अपग्रेड पथ करने वालों के लिए:

ng.core.enableProdMode()

मेरे लिए (जावास्क्रिप्ट में) ऐसा दिखता है:

var upgradeAdapter = new ng.upgrade.UpgradeAdapter();
ng.core.enableProdMode()
upgradeAdapter.bootstrap(document.body, ['fooApp']);

4

आपको अपने सीड प्रोजेक्ट द्वारा प्रदान की जाने वाली किसी भी पर्यावरण की जरूरत नहीं है। बस एक configuration.ts है और सभी ऐसी प्रविष्टियाँ जोड़ें जिनके लिए रनटाइम निर्णय (उदाहरण: - लॉगिंग कॉन्फ़िगरेशन और urls) की आवश्यकता होती है। यह किसी भी डिजाइन संरचना में फिट होगा और भविष्य में भी मदद करेगा

configuration.ts

export class Configuration {

   isInProductionMode : bool = true;

   // other configuration
   serviceUrl : string = "http://myserver/myservice.svc";
   logFileName : string = "...";
}

// अब अपने स्टार्टअप कोड (main.ts या समतुल्य सीड प्रोजेक्ट डिज़ाइन के अनुसार उपयोग करें)

import { Configuration } from './configuration';
import { enableProdMode } from '@angular/core';
....
if (Configuration.isInProductionMode)
    enableProdMode();

1
आप कैसे अंतरंग / देव के साथ अंतर करते हैं जो isInProductionModeसच / गलत है? निर्माण समय में?
LeOn -

आमतौर पर GULP पैरामीटर या समकक्ष के रूप में
नितिनसिंह

JSON में निम्नानुसार प्रविष्टि है: - "environmentSource": "environment / environment.ts", "वातावरण": {"dev": "वातावरण / environment.ts", "ठेस": "वातावरण / environment.prod.ts" }
नितिनसिंह



0

मेरे कोणीय 2 परियोजना में "main.ts" फ़ाइल में अन्य उत्तरों का उल्लेख नहीं है, लेकिन इसमें " boot.ts " है " फ़ाइल है, जो उसी चीज़ के बारे में प्रतीत होती है। (अंतर संभवतः कोणीय के विभिन्न संस्करणों के कारण है।)

import"Boot.ts" में अंतिम निर्देशन के बाद इन दो पंक्तियों को जोड़ना मेरे लिए काम किया:

import { enableProdMode } from "@angular/core";
enableProdMode();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.