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

Configuration 'production' could not be found in project 'my-lib'

我正在用 Angular 6.1.0

构建一个库

所有文章都建议 运行 使用 --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% 确定。如果有人能验证这一点,那就太好了。

在Angular6+是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
        }
      }

从 6.1 版开始,Angular 总是对我们的库进行生产构建,即在 Angular 的新版本中,我们在构建它时不再需要 --prod 标志,库总是以 AOT 模式构建。为了确保,您可以在 Angular-CLI 存储库中查看这些问题:

https://github.com/angular/angular-cli/issues/12290

https://github.com/angular/angular-cli/issues/12226

以及这篇文章("Building the Library"部分):

https://blog.angularindepth.com/creating-a-library-in-angular-6-87799552e7e5

如果您仍在使用版本 6.0.x(或更低版本),您将希望在构建库时使用 --prod 标志。

如果需要,您仍然可以选择将 configuration 作为参数传递:ng build --configuration=configuration(请参阅 docs)。如有必要,您可以在 angular.json 中指定构建规则,例如,对于 production build:

"configurations": {
    "production": {
        // Options here
    }
}

命令应该是ng build --configuration=production.

如果没有,请在架构师部分下查找 "configurations"。试试像下面这样添加一个。

"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"
        }
      }
    }

不再需要 --prod,因为库始终以 AOT 模式构建并且没有 --prod 您只需要 运行 ng build