プロダクションモードを有効にする方法は?


182

私は関連する質問を読んでいて、これを見つけましたが、私の質問は、開発モードからプロダクションモードに切り替える方法です。ここで指摘されているモードにはいくつかの違いがあります。

コンソールで....Call enableProdMode() to enable the production mode.確認できますが、そのメソッドを呼び出す必要がある型のインスタンスがわかりません。

誰かがこの質問に答えられますか?


私はWebpack 2+ Angular2とTypescriptを使用して構成をパスするのがおかしいことに気づき、単純なソリューションを作成しました:github.com/Sweetog/yet-another-angular2-boilerplate
Brian Ogden

回答:


211

これを有効にするには、(ブートストラップを呼び出す前に)関数をインポートして実行します。

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

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

ただし、このエラーはバインディングに問題があることを示しているため、単に無視するのではなく、なぜそれが起こっているのかを理解してください。


typescriptを使用していない場合に、ProdMode()を有効にする方法は?ng.platform.browser.bootstrap(...)の前にこのメソッドを呼び出すだけの場合、次のエラーが発生します。enableProdModeが定義されていません
Daniel Dudas

2
@DanielDudas私はes5を使用していませんが、試してくださいng.core.enableProdMode()
Sasxa

3
「angular2 / core」は「@ angular / core」になりました。以下の私の答えを参照してください。
adampasz 2016年

Ionic2を使用しています。このブートストラップはどのファイルで呼び出されますか?私は、サンプルアプリを生成するときionic start test sidemenu --v2 --ts、私が見るapp.tsところ、このブートストラップ機能が呼び出されたが、か?
Guus

1
私も同じことをしましたが、「プラットフォームのセットアップ後にprodモードを有効にできない」などの例外が発生します。誰かがこれを解決するのを手伝ってくれる?
Gowtham 2017年

81

Angular 2アプリケーションのプロダクションモードを有効にする最良の方法は、angular-cliを使用してでアプリケーションをビルドすることですng build --prod。これにより、本番プロファイルでアプリケーションが構築されます。angular-cliを使用すると、コードを常に変更せずに、開発モードを使用して、ng serveまたは開発中に開発モードを使用できるという利点がありますng build


6
Angular 6を使用していますが、prodモードでビルドするにはng build --prodです。このページにアクセスするすべての新規参入者のために、これをここに置くだけです。
詳細

私はと思い、ビルド--prodを念頭に置いてisDevModeとenableProdModeを保っ実装されています。この回答は回答としてマークする必要があります
bubi

58

これは、Angular 2の最新リリース(2.0.0-rc.1)を使用して動作しました。

main.ts

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

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

ここにそれらのドキュメントからの関数リファレンスがあります:https : //angular.io/api/core/enableProdMode



1
@emp公式のAngularのドキュメントに、どこで呼び出すenableProdModeべきか書かれていないことに驚いています。

55

angular-cliを使用して新しいプロジェクトをビルドしたとき。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()が@ angular / coreからインポートされているため、これを非Angular-cliプロジェクトに追加できます。


これは非製品ビルドでどのように機能しますか?その場合、environment.tsは無視されるので、モジュールをインポートしようとするとtscコンパイルエラーが発生しませんか?
llasarov 16

@llasarov environment.tsは構成ファイルのように動作し、プロダクションモードをオン/オフにすることができます。main.tsは、trueの場合にenableProdModeを呼び出すだけなので、特定のビルドプロセスなしで実行できます。ここでロギングを選択することもできます。logModeがdebugであるかどうかを確認してから、カスタムロガーサービスで詳細なStackTraceを実行します。それ以外は、1つのライナーをログに記録するだけです
NitinSingh


10

Angular 6.XXでプロダクションモードを有効にするには、環境ファイルに移動します。

この道のように

あなたの道: project>\src\environments\environment.ts

production: falseからの変更:

export const environment = {
  production: false
};

export const environment = {
  production: true
};

ここに画像の説明を入力してください


8

ほとんどの場合、prodモードは開発時には必要ありません。したがって、私たちの回避策は、それがlocalhost ではない場合のみ有効にすることです。

お使いのブラウザの中にmain.ts、あなたのルートAppModuleを定義します。

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

isLocalまた、のような他の目的に使用することができるenableTracingためRouterModule、より良いのdevのフェーズ中にスタックトレースをデバッグするため。


6

ng buildコマンドを使用すると、environment.tsファイルが上書きされます

デフォルトでは、ng buildコマンドを使用すると、開発環境が設定されます

本番環境を使用するには、次のコマンドを使用しますng build --env = prod

これにより、本番モードが有効になり、environment.tsファイルが自動的に更新されます


1
これはAngular CLI 6で変更されましたng build --configuration=production(デフォルトでは、CLIで生成されたangular.jsonファイルを使用)。
2018年


4

TypeScriptに切り替えずにアップグレードパスを実行する場合:

ng.core.enableProdMode()

私(JavaScript)では、次のようになります。

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

4

シードプロジェクトによって提供される環境ファイルやそのようなファイルは必要ありません。configuration.tsを用意し、実行時の決定を必要とするそのようなエントリをすべて追加します(例:-ロギング構成とURL)。これはあらゆる設計構造に適合し、将来的にも役立ちます

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
isInProductionModetrue / falseになるようにprod / devをどのように区別しますか?ビルド時に?
LeOn-Han Li 2017年

通常、GULPパラメータまたは同等のもの
NitinSingh

JSONのエントリは次のとおりです:-"environmentSource": "environments / environment.ts"、 "environments":{"dev": "environments / environment.ts"、 "prod": "environments / environment.prod.ts" }
NitinSingh



0

私のAngular 2プロジェクトには、他の回答で述べた「main.ts」ファイルはありませんが、「boot.ts」ファイルはありますが、これはほぼ同じようです。(違いはおそらくAngularのバージョンの違いによるものです。)

import「boot.ts」の最後のディレクティブの後に次の2行を追加すると、うまくいきました。

import { enableProdMode } from "@angular/core";
enableProdMode();
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.