Конфигурация "производство" не может быть найдена в проекте "my-lib"

Я создаю библиотеку с 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 сгенерирует сборку продукта?

Глядя на содержимое папки dist, это выглядит так, но я не уверен на 100%. Если бы кто-то мог это подтвердить, было бы здорово.

22
0
16 454
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

Имея такую ​​же проблему, это решение не решает проблему.

Aphax 12.11.2018 15:12
Ответ принят как подходящий

Начиная с версии 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 при сборке вашей библиотеки.

У вас все еще есть возможность передать configuration в качестве параметра, если это необходимо: ng build --configuration=configuration (см. документы). При необходимости вы можете указать правила сборки в angular.json, например, для сборки production:

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

И команда должна быть ng build --configuration=production.

Спасибо за подтверждение. Я подозревал, что это так, но хотел убедиться

Himanshu Arora 27.11.2018 19:26

в разделе «Архитектор» найдите «конфигурации», если у вас их нет. попробуйте добавить один, как показано ниже.

"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

Спасибо, Рахул. Есть ли какой-либо подтверждающий документ Angular, который разъясняет больше аспектов

Sumit Ramteke 13.08.2020 16:18

Другие вопросы по теме