在项目 'my-lib' 中找不到名为 'production' 的配置。

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.json 时,库项目中没有生产构建配置的定义,仅应用程序项目才有。”
“下面是我在使用 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个回答

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标志。如果需要,您仍可以通过将配置作为参数传递来进行配置:ng build --configuration=configuration(请参见docs)。如有必要,您可以在angular.json中指定构建规则,例如:对于生产构建。
"configurations": {
    "production": {
        // Options here
    }
}

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


2
感谢您的确认。我本来就有猜想,但还是想确定一下。 - Himanshu Arora

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

5
遇到同样的问题,这个解决方案无法解决问题。 - Aphax

0

由于该库始终以AOT模式构建,因此不再需要--prod。您只需运行ng build即可,无需--prod。


谢谢 Rahul。是否有任何支持 Angular 的文档可以更清楚地解释更多方面? - Sumit Ramteke

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接