我正在使用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%。如果有人可以验证这一点,那就太好了。
答案 0 :(得分:10)
从6.1版开始,Angular总是对我们的库进行生产构建,即在新版本的Angular中,我们在构建时不再需要--prod
标志,库始终以AOT模式构建。为了确保这一点,您可以在Angular-CLI存储库中查看以下问题:
https://github.com/angular/angular-cli/issues/12290
https://github.com/angular/angular-cli/issues/12226
本文(“构建库” 部分):
https://blog.angularindepth.com/creating-a-library-in-angular-6-87799552e7e5
如果您仍在使用6.0.x版(或更低版本),则在构建库时将要使用--prod标志。
答案 1 :(得分:0)
在“架构师”部分下,如果没有,请查找“配置”。尝试添加如下所示的内容。
"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"
}
}
}
答案 2 :(得分:0)
-prod不再需要,因为该库始终以AOT模式构建,而没有--prod,则只需运行ng build