Конфигурация 'production' не найдена в проекте '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
сгенерирует сборку prod?
Глядя на содержимое папки dist, все выглядит так, но я не уверен на 100%. Если кто-то сможет это подтвердить, это будет здорово.
Ответы
Ответ 1
Начиная с версии 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
.
Ответ 2
В 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
}
}
Ответ 3
под разделом архитектора ищите "конфигурации", если у вас их нет. попробуйте добавить один, как показано ниже.
"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"
}
}
}