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

时间:2018-09-13 18:13:04

标签: angular ng-packagr angular-library

我正在使用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%。如果有人可以验证这一点,那就太好了。

3 个答案:

答案 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