Angular CLI 6 führte ein neues Konzept für Builder (aka Architect Targets) ein.
Es gibt eine Reihe von vorgefertigten Buildern , die mit @angular-devkit/build_angular
geliefert werden, aber leider gibt es keine Dokumentation, in der erklärt wird, wie Sie einen eigenen Builder erstellen.
Wie erstelle ich einen eigenen Builder (um beispielsweise die zugrunde liegende Webpack-Konfiguration zu ändern)?
Den vollständigen Artikel finden Sie hier .
Der Einfachheit halber gehe ich davon aus, dass der neue Builder in TypeScript implementiert ist, er kann jedoch auch in reinem JavaScript implementiert werden.
builders
enthält, der auf builders.json verweist.Implementieren Sie Ihren Builder in my-cool-builder/index.ts. Der Builder muss die folgende Schnittstelle implementieren:
export interface Builder<OptionsT> {
run(builderConfig: BuilderConfiguration<Partial<OptionsT>>): Observable<BuildEvent>;
}
Während BuildEvent
ist dies:
export interface BuildEvent {
success: boolean;
}
BuilderConfiguration
ist das:
export interface BuilderConfiguration<OptionsT = {}> {
root: Path;
sourceRoot?: Path;
projectType: string;
builder: string;
options: OptionsT;
}
Und OptionsT
ist die Schnittstelle, die Sie für Ihre Builderoptionen in schema.d.ts definiert haben.
Sie können browser
architect als Referenz verwenden.
Fügen Sie nach der Implementierung Ihren Builder zu builders.json hinzu:
{
"$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"
}
}
}
In Ihrem angle.json:
"architect": {
...
"build": {
"builder": "./custom-builders:cool-builder"
"options": {
your options here
}
Das vollständige Beispiel finden Sie in dieser Bibliothek: https://github.com/meltedspark/angular-builders
Ich habe es nicht getestet und bin nicht ganz sicher, aber dieses Konzept könnte eine Lösung sein.
architect.build.builder
verwendet einige Angular - Schemata, um den Erstellungsprozess durchzuführen. Sie können eigene Schemata erstellen, die reguläre Build-Schemata mit zusätzlicher Logik verwenden/erben, die Sie implementieren möchten.