在项目'my-lib'中找不到配置'生产'

Him*_*ora 14 angular angular-library ng-packagr

我正在使用Angular 6.1.0构建一个库

  • ng new lib-demo
  • ng generate library my-lib

所有文章建议使用如下--prod标志运行库的构建:

ng build my-lib --prod
Run Code Online (Sandbox Code Playgroud)

但是,这会引发错误

Configuration 'production' could not be found in project 'my-lib'.
Run Code Online (Sandbox Code Playgroud)

这可能是正确的,因为当我查看angular.jsonproduction build configuration时,库项目中没有a的定义.它仅适用于应用程序项目.

以下是我在使用的库项目的构建配置下所拥有的内容 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"
      }
    }
Run Code Online (Sandbox Code Playgroud)

所以这里的问题是,--prod不再需要标志,只是运行ng build m-lib会生成prod构建?

看看dist文件夹的内容看起来如此,但我不是百分百肯定.如果有人可以验证这一点,那就太好了.

Com*_*ide 16

从版本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标志.

  • 感谢您验证它。我怀疑确实如此,但想确定一下 (2认同)

HP *_*una 15

在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
        }
      }
Run Code Online (Sandbox Code Playgroud)

  • 同样的问题,这个解决方案不能解决问题 (3认同)