web-dev-qa-db-fra.com

La configuration «production» est introuvable dans le projet «my-lib»

Je crée une bibliothèque avec Angular 6.1.0

  • ng new lib-demo
  • ng generate library my-lib

Tous les articles conseillent d'exécuter la construction de la bibliothèque avec un --prod drapeau comme ceci:

ng build my-lib --prod

Cependant, cela génère une erreur

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

Ce qui est probablement correct car quand je regarde le angular.json il n'y a pas de définition pour un production build configuration dans le projet de bibliothèque. Il est présent uniquement pour le projet d'application.

ce qui suit est ce que j'ai sous la configuration de construction pour le projet de bibliothèque qui utilise 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"
      }
    }

Donc, la question ici est que c'est le --prod le drapeau n'est plus requis et fonctionne simplement ng build m-lib va générer une génération de prod?

En regardant le contenu du dossier dist, il semble que oui, mais je ne suis pas sûr à 100%. Si quelqu'un pouvait valider cela, ce serait génial.

13
Himanshu Arora

À partir de la version 6.1, Angular fait toujours un build de production de notre bibliothèque, c'est-à-dire que dans les nouvelles versions de Angular nous n'avons pas besoin du --prod drapeau plus lors de sa construction, les bibliothèques sont toujours construites en mode AOT. Pour vous assurer, vous pouvez jeter un œil à ces problèmes dans le référentiel Angular-CLI:

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

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

Et cet article ( "Construire la bibliothèque" section):

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

Si vous utilisez toujours la version 6.0.x (ou inférieure), vous voudrez utiliser l'indicateur --prod lors de la construction de votre bibliothèque.

13
Commercial Suicide

Dans Angular 6+ c'est ng build --configuration=production

Mettez ensuite une configuration de production dans 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
        }
      }
15
HP Bruna

dans la section architecte, recherchez les "configurations", si vous n'en avez pas. essayez d'en ajouter un comme ci-dessous.

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