新たにangle-cli 1.0.0.beta.17(最新のもの)をインストールし、新しいプロジェクトを開始し、ポート4200で問題なくプロジェクトを提供できます-標準の「アプリは動作します!」メッセージ。
ただし、コマンドng build --prod
を使用してこの空の汎用アプリケーションを実稼働用にビルドしようとすると、main。*。jsファイルがまったく作成されず、次のような警告画面がいくつか表示されます。
これは真新しい空のプロジェクトです-私はまだ何も壊す機会がありませんでした...
製品版をビルドする方法は?
Angular v6 +用に更新されました
# Prod - these are equivalent
ng build --configuration=production
ng build --c=production
ng build --prod=true
# Dev - and so are these
ng build --configuration=development
ng build --c=development
ng build --prod=false
ng build
その他のフラグ設定はこちら
Angular-cliのgithub wiki v2 +ごとに、これらは開発および本番ビルドを開始する最も一般的な方法です
# Prod these are equivalent
ng build --target=production --environment=prod
ng build --prod --env=prod
ng build --prod
# Dev and so are these
ng build --target=development --environment=dev
ng build --dev --env=dev
ng build --dev
ng build
--devと--prodのビルドに影響するさまざまなデフォルトフラグがあります。
Flag --dev --prod
--aot false true
--environment dev prod
--output-hashing media all
--sourcemaps true false
--extract-css false true
--prod
は、以下のフラグなし設定も設定します。
.angular-cli.json
で構成されている場合、Service Workerを追加します。process.env.NODE_ENV
をproduction
値に置き換えます(reactのような一部のライブラリに必要です)。AOTを機能させるには、トラブルシューティングを行う必要があります。私が走ったとき:
ng build --prod --aot = false
次のようなエラーが返されます
Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory'
もともと、AOTを機能させるには、プロジェクトのリファクタリングが必要でした。ただし、このエラーが発生している場合は修正される可能性があります。試して
npm i [email protected]
使用してみてください:ng build --target = productionこれは動作するはずです。
CLIバージョン(1.0.1)では次を使用します。
ng build --prod
これにより、index.htmlとすべてのバンドルされたjsファイルを含むdistフォルダーが本番用に準備されます。
これを試して
ng build --env=prod
ビルドシステムはデフォルトでenvironment.ts
を使用する開発環境に設定されますが、ng build --env=prod
を実行すると、代わりにenvironment.prod.ts
が使用されます。
プロジェクトが新しいangular cliアプリの場合のサンプル結果。
10% building mod3439ms building modules 1ms add01564ms 917ms asset45ms emittingHash: 9216e76d6f10637c945c
Version: webpack 2.1.0-beta.22
Time: 6358ms
Asset Size Chunks Chunk Names
main.bundle.js 2.6 MB 0, 2 [emitted] main
styles.bundle.js 10.2 kB 1, 2 [emitted] styles
inline.js 5.53 kB 2 [emitted] inline
main.map 2.61 MB 0, 2 [emitted] main
styles.map 14.2 kB 1, 2 [emitted] styles
inline.map 5.59 kB 2 [emitted] inline
index.html 482 bytes [emitted]
assets/.npmignore 0 bytes [emitted]
chunk {0} main.bundle.js, main.map (main) 2.06 MB {1} [initial] [rendered]
chunk {1} styles.bundle.js, styles.map (styles) 9.96 kB {2} [initial] [rendered]
chunk {2} inline.js, inline.map (inline) 0 bytes [entry] [rendered]
Child html-webpack-plugin for "index.html":
Asset Size Chunks Chunk Names
index.html 2.82 kB 0
chunk {0} index.html 350 bytes [entry] [rendered]
完了し、angular-cli.json
のoutDir
を変更していない限り、/ distの下にあります。
Aotが実装されているかどうか。
Aotが実装されている場合:
ng build --prod
Aotが実装されていない場合:
ng build --prod --aot=false
最新バージョンのangle-cli、TypeScriptを更新する必要があります。コマンドを使用する場合:
ng build --prod --aot=false
プロジェクトはJITコンパイルをコンパイルし、angular-cliを使用する場合は動作する必要があります。
コマンドでビルドしたい場合
ng build --prod --aot=true
それはAOTコンパイルであり、main.tsファイルを次のように更新する必要があります:
import { enableProdMode } from '@angular/core';
import { platformBrowser } from '@angular/platform-browser';
import { AppModule } from './app/app.module';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
platformBrowser().bootstrapModuleFactory(AppModule);
angular cliを使用してangularアプリケーションを本番モードにビルドするためのコマンドがたくさんあります。
ng build --env = prod
Cmd distでこのコマンドを実行すると、prodビルドに関連するすべての縮小ファイルを含むデフォルトフォルダーが作成されますが、index.htmlにベースパスは設定されません。 index.htmlを変更するには、(。)の追加などの手動変更を行ってください。
<base href="./">
また、angular/CLIコマンドを使用してprodモードでコードをビルドするときにパラメーターを渡すこともできます。
ng build --base-href=./ --env=prod
AOTやビルドオプティマイザーを渡すなど、ビルドするコマンドもあります(バンドルサイズを減らすため)。
ng build --prod --build-optimizer
ビルド後にデフォルトのフォルダー名(dist)を変更する場合は、.angular-cli.jsonのoutDir値を変更できます。
-prod
スイッチの使用によって暗示されるAOTが必要です。残念ながら、Angular CLI自体が破損した場合、エラーメッセージは役に立ちません。これは私がそれを解決した方法です:
npm install [email protected]
このページのずっと下にある解決策を見つけました: https://github.com/angular/angular-cli/issues/711
Angular CLIバージョンを少なくとも1.2.6に更新するという言及をいくつか見ました。同様に問題を回避しますが、まだテストしていません。
これらは、Javaスクリプトのソースコードまたはプロジェクトで使用しているサードパーティライブラリからのuglify jsの警告です。今は無視できます。
Angular CLIチームは、prodビルドでこれを抑制することに取り組んでいます https://github.com/angular/angular-cli/pull/1609