Angular 6.1.0でライブラリを構築しています
ng new lib-demo
ng generate library my-lib
すべての記事は、次のような--prod
フラグを使用してライブラリのビルドを実行することを推奨しています。
ng build my-lib --prod
ただし、これはエラーをスローします
Configuration 'production' could not be found in project 'my-lib'.
angular.jsonを見ると、ライブラリプロジェクトにproduction build configuration
の定義がないため、これはおそらく正しいでしょう。アプリケーションプロジェクトのみに存在します。
以下は、ng-packagr
を使用するライブラリプロジェクトのビルド構成の下にあるものです
"build": {
"builder": "@angular-devkit/build-ng-packagr:build",
"options": {
"tsConfig": "projects/my-lib/tsconfig.lib.json",
"project": "projects/my-lib/ng-package.json"
}
}
ここでの質問は、--prod
フラグはもう必要ではなく、ng build m-lib
を実行するだけでprodビルドが生成されるということです。
Distフォルダーの内容を見るとそう見えますが、100%確信はありません。誰かがこれを検証できれば、それは素晴らしいことです。
バージョン6.1以降では、Angularは常にライブラリの製品ビルドを行います。つまり、Angularの必要はありません--prod
フラグを作成すると、ライブラリは常にAOTモードでビルドされます。確認するために、Angular-CLIリポジトリで次の問題を確認できます。
https://github.com/angular/angular-cli/issues/1229
https://github.com/angular/angular-cli/issues/12226
そしてこの記事( "Building the Library"セクション):
https://blog.angularindepth.com/creating-a-library-in-angular-6-87799552e7e5
バージョン6.0.x(またはそれ以前)を使用している場合は、ライブラリをビルドするときに--prodフラグを使用します。
Angular 6+それはng build --configuration=production
次に、実稼働構成をangle.jsonに配置します
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true
}
}
アーキテクトセクションの下で、「構成」を探します(お持ちでない場合)。以下のようなものを追加してみてください。
"configurations": {
"production": {
"project": "projects/PROJECT-NAME/ng-package.json"
}
}
your architect section should like this
"architect": {
"build": {
"builder": "@angular-devkit/build-ng-packagr:build",
"options": {
"tsConfig": "projects/PROJECT-NAME/tsconfig.lib.json",
"project": "projects/PROJECT-NAME/ng-package.json"
},
"configurations": {
"production": {
"project": "projects/PROJECT-NAME/ng-package.json"
}
}
}