Üretim modu nasıl etkinleştirilir?


182

Ben ilgili sorular okuyordum ve buldum bu bir , ama üretim moduna geliştirmeden geçiş nasıl benim sorudur. İşaret edilmektedir modlar arasında bazı farklar vardır burada .

Konsolda görebiliyorum ....Call enableProdMode() to enable the production mode.Ancak, hangi yöntemi bu tür çağırmak gerekir emin değilim.

Birisi bu soruya cevap verebilir mi?


Webpack 2+ Angular2 ve Typescript kullanarak çılgın geçen konfigürasyonu buldum, basit bir çözüm yarattım
Brian Ogden

Yanıtlar:


212

Fonksiyonu içe aktararak ve yürüterek (bootstrap çağırmadan önce) etkinleştirirsiniz:

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

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

Ancak bu hata, bağlantılarınızla ilgili bir şeyin yanlış olduğunun bir göstergesidir, bu yüzden sadece reddetmemelisiniz, ancak neden olduğunu anlamaya çalışmalısınız.


Typescript kullanmıyorsan nasıl etkinleştirilir? Sadece bu yöntemi ng.platform.browser.bootstrap (...) 'dan önce çağırırsam bu hatayı alıyorum: enableProdMode tanımlanmamış
Daniel Dudas

2
@DanielDudas es5 kullanmıyorum, ama deneyinng.core.enableProdMode()
Sasxa

3
"Açısal2 / çekirdek" in artık "@ açısal / çekirdek" olduğuna inanıyorum. Cevabımı aşağıda görebilirsiniz.
adampasz

Ionic2 kullanıyorum. Bu dosyaya hangi dosyada denir? Örnek bir uygulama oluşturduğumda ionic start test sidemenu --v2 --tsgörüyorum app.tsama bu bootstrap fonksiyonu nereye çağırılıyor?
Guus

1
Aynı şeyi yaptım ama "Platform kurulumundan sonra eşya modu etkinleştirilemiyor" gibi bir istisna alıyorum. Herkes bu sorunu çözmemde bana yardımcı olabilir mi?
Gowtham

81

Bir Açısal 2 uygulaması için üretim modunu etkinleştirmenin en iyi yolu, açısal-cli kullanmak ve uygulamayı birlikte oluşturmaktır ng build --prod. Bu, uygulamayı üretim profiliyle oluşturacaktır. Angular-cli kullanmak , kodu her zaman değiştirmeden geliştirme sırasında ng serveveya geliştirirken geliştirme modunu kullanabilme avantajına sahiptir ng build.


6
Açısal 6 kullanıyorum ve prod modunda oluşturmak için build --prod. Sadece bu sayfayı ziyaret eden yeni gelenler için buraya koymak.
Verbose

Ben build -prod isDevMode ve enableProdMode akılda tutarak uygulandığını düşünüyorum . Bu cevap cevap olarak işaretlenmelidir
bubi


56

Açısal klibi kullanarak yeni bir proje yaptığımda. Environment.ts adlı bir dosya eklendi. Bu dosyanın içinde böyle bir değişken var.

export const environment = {
  production: true
};

Sonra main.ts'de buna sahipsiniz.

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 () @ açısal / core'dan içe aktarıldığı için bunu açısal-cli olmayan bir projeye ekleyebilirsiniz.


Prod olmayan yapı için bu nasıl çalışır? Bu durumda ortam.ts göz ardı edilir, bu yüzden modülü almaya çalışırken bir tsc derleme hatası almıyor musunuz?
llasarov

@llasarov the environment.ts sadece üretim modunu açıp kapatabileceğiniz bir yapılandırma dosyası gibi davranıyor. Main.ts sadece true ise enableProdMode öğesini çağırır, böylece bu herhangi bir özel oluşturma işlemi olmadan yapılabilir. Ayrıca burada günlük kaydını seçerek, logMode'un hata ayıklama olup olmadığını kontrol ederek, özel günlükçü hizmetinizin ayrıntılı bir StackTrace işi yaparak sadece bir astarı günlüğe
kaydederek yapabilirsiniz

13

src/enviroments/enviroments.tsÜretim moduna gidin ve etkinleştirin

export const environment = {
  production: true
};

Açısal 2 için


10

Açısal 6.XX'te üretim modunu etkinleştirmek için Ortam dosyasına gidin

Bu yolu beğenin

Yolunuz: project>\src\environments\environment.ts

Şununla değiştir production: false:

export const environment = {
  production: false
};

için

export const environment = {
  production: true
};

resim açıklamasını buraya girin


8

Çoğu zaman eşya modu geliştirme süresi boyunca gerekli değildir. Bu nedenle geçici çözümümüz yalnızca yerel ana bilgisayar DEĞİL olduğunda etkinleştirmektir .

main.tsKök AppModule'nizi tanımladığınız tarayıcılarda :

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

isLocalAyrıca gibi başka amaçlar için de kullanılabilir enableTracingiçin RouterModuledev aşamasında daha iyi bir ayıklama için yığın izleme.


6

Ng build komutu kullanıldığında environment.ts dosyasının üzerine yazılır

Ng build komutu kullanıldığında varsayılan olarak geliştirme ortamını ayarlar

Üretim ortamını kullanmak için build --env = prod komutunu kullanın.

Bu, üretim modunu etkinleştirir ve environment.ts dosyasını otomatik olarak günceller


1
Bu, Açısal CLI 6'da ng build --configuration=production(CLI tarafından oluşturulan angular.json dosyası kullanılarak varsayılan olarak) olarak değiştirildi.
slasky

5

uygulamanızda kullanabilirsiniz. main.ts dosyası

import {enableProdMode} from '@angular/core';
enableProdMode();
bootstrap(....);

5

Environment.ts dosyasında üretimi true değerine ayarlayın

export const environment = {
  production: true
};

Gerçekten EZ: P TY için ...!
Carlos Galeano

4

Yükseltme yolunu TypeScript'e geçmeden yapanlar için:

ng.core.enableProdMode()

Benim için (javascript'te) şöyle:

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

4

Tohum projeniz tarafından sağlanacak herhangi bir environment.ts veya böyle bir dosyaya ihtiyacınız yoktur. Sadece bir configuration.ts dosyasına sahip olun ve çalışma zamanı kararı gerektiren tüm girişleri ekleyin (örnek: - yapılandırma ve URL'leri günlüğe kaydetme). Bu, herhangi bir tasarım yapısına uyacak ve gelecekte de yardımcı olacaktır.

configuration.ts

export class Configuration {

   isInProductionMode : bool = true;

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

// Şimdi başlangıç ​​kodunuzda kullanın (ana proje tasarımına göre main.ts veya eşdeğeri)

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

1
prod / dev ile bunun isInProductionModedoğru / yanlış olduğunu nasıl ayırt edersiniz ? inşa süresi?
LeOn - Han Li

Genellikle bir GULP parametresi veya eşdeğeri olarak
NitinSingh

JSON şu şekilde giriş yapar: - "environmentSource": "ortamlar / environment.ts", "ortamlar": {"dev": "ortamlar / ortam.ts", "eşya": "ortamlar / ortam.prod.ts" }
NitinSingh


0

Açısal 2 projemde diğer yanıtlardan bahseden "main.ts" dosyası yok, ancak aynı şey gibi görünen bir " boot.ts " dosyası var. (Fark muhtemelen Angular'ın farklı sürümlerinden kaynaklanmaktadır.)

Bu iki satırı import"boot.ts" deki son yönergeden sonra eklemek benim için çalıştı:

import { enableProdMode } from "@angular/core";
enableProdMode();
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.