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