22

我正在使用 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.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"
      }
    }

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

查看 dist 文件夹的内容看起来是这样,但我不是 100% 确定。如果有人可以验证这一点,那就太好了。

4

4 回答 4

24

从 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 标志。

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

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

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

于 2018-11-26T23:11:31.313 回答
19

在 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
        }
      }
于 2018-09-13T18:35:25.423 回答
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"
        }
      }
    }
于 2019-06-13T20:27:02.783 回答
0

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

于 2020-03-28T16:16:15.657 回答