在项目“my-lib”中找不到配置“生产”
Posted
技术标签:
【中文标题】在项目“my-lib”中找不到配置“生产”【英文标题】:Configuration 'production' could not be found in project 'my-lib' 【发布时间】:2019-02-18 12:50:45 【问题描述】:我正在使用 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
将生成产品构建?
查看 dist 文件夹的内容看起来是这样,但我不是 100% 确定。如果有人可以验证这一点,那就太好了。
【问题讨论】:
【参考方案1】:从 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 标志。
如果需要,您仍然可以选择将configuration
作为参数传递:ng build --configuration=configuration
(请参阅docs)。如有必要,您可以在angular.json
中指定构建规则,例如为production
构建:
"configurations":
"production":
// Options here
并且命令应该是ng build --configuration=production
。
【讨论】:
感谢您的验证。我怀疑确实如此,但想确定【参考方案2】:在 Angular 6+ 中是ng build --configuration=production
然后在angular.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
【讨论】:
遇到同样的问题,这个解决方案不能解决问题【参考方案3】:如果没有,请在架构师部分查找“配置”。尝试添加如下所示。
"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"
【讨论】:
【参考方案4】:不再需要 --prod,因为库总是在 AOT 模式下构建并且没有 --prod 您只需要运行 ng build
【讨论】:
谢谢拉胡尔。是否有任何支持 Angular 文档阐明更多方面以上是关于在项目“my-lib”中找不到配置“生产”的主要内容,如果未能解决你的问题,请参考以下文章
Heroku:在 /app/config/storage.yml 中找不到 Active Storage 配置(RuntimeError)