【问题标题】:Configuration 'production' could not be found in project 'my-lib'在项目“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% 确定。如果有人可以验证这一点,那就太好了。

【问题讨论】:

    标签: angular ng-packagr angular-library


    【解决方案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 文档阐明更多方面
      猜你喜欢
      • 2017-09-18
      • 2018-10-15
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      相关资源
      最近更新 更多