Angular CLI 6 a introduit un nouveau concept de constructeur (également appelé Architect Cibles).
Il y a quelques constructeurs pré-construits qui viennent avec @angular-devkit/build_angular
, mais malheureusement, aucune documentation n’explique comment créer votre propre constructeur.
Comment créer mon propre générateur (par exemple, pour modifier la configuration du pack Web sous-jacent)?
L'article complet peut être trouvé ici .
Par souci de simplicité, je suppose que le nouveau générateur est implémenté dans TypeScript, mais il peut également être implémenté en JavaScript pur.
builders
pointant vers builders.json.Implémentez votre générateur dans my-cool-builder/index.ts. Le constructeur doit implémenter l'interface suivante:
export interface Builder<OptionsT> {
run(builderConfig: BuilderConfiguration<Partial<OptionsT>>): Observable<BuildEvent>;
}
Alors que BuildEvent
est ceci:
export interface BuildEvent {
success: boolean;
}
BuilderConfiguration
est ceci:
export interface BuilderConfiguration<OptionsT = {}> {
root: Path;
sourceRoot?: Path;
projectType: string;
builder: string;
options: OptionsT;
}
Et OptionsT
est l'interface que vous avez définie pour vos options de générateur dans schema.d.ts
Vous pouvez utiliser browser
architect target comme référence.
Une fois implémenté, ajoutez votre générateur à builders.json:
{
"$schema": "@angular-devkit/architect/src/builders-schema.json",
"builders": {
"cool-builder": {
"class": "./my-cool-builder",
"schema": "./my-cool-builder/schema.json",
"description": "My cool builder that builds things up"
}
}
}
Dans votre angular.json:
"architect": {
...
"build": {
"builder": "./custom-builders:cool-builder"
"options": {
your options here
}
Pour un exemple complet, consultez cette bibliothèque: https://github.com/meltedspark/angular-builders
Je ne l'ai pas testé et je ne suis pas tout à fait sûr, mais ce concept pourrait être une solution.
architect.build.builder
utilise des schémas Angular pour effectuer le processus de construction. Vous pouvez créer vos propres schémas qui utilisent/héritent des schémas de construction standard avec une logique supplémentaire que vous souhaitez implémenter.