Angular CLI 6引入了新的构建器(也称为Architect Targets)的概念。
有几个预先构建的构建器随@angular-devkit/build-angular
一起提供,但不幸的是没有文档说明如何创建自己的构建器。
我该如何创建自己的构建器(例如修改基础webpack配置)?
Angular CLI 6引入了新的构建器(也称为Architect Targets)的概念。
有几个预先构建的构建器随@angular-devkit/build-angular
一起提供,但不幸的是没有文档说明如何创建自己的构建器。
我该如何创建自己的构建器(例如修改基础webpack配置)?
如需 Angular 8+ 的相关信息,请参阅 AngularInDepth 文章。
完整文章可在 此处找到。
为简单起见,我假设新的构建器是用 TypeScript 实现的,但也可以使用纯 JavaScript 实现。
builders
条目。在 my-cool-builder/index.ts 中实现你的构建器。构建器必须实现以下接口:
export interface Builder<OptionsT> {
run(builderConfig: BuilderConfiguration<Partial<OptionsT>>): Observable<BuildEvent>;
}
当BuildEvent
是这样的:
export interface BuildEvent {
success: boolean;
}
BuilderConfiguration
是这样的:
export interface BuilderConfiguration<OptionsT = {}> {
root: Path;
sourceRoot?: Path;
projectType: string;
builder: string;
options: OptionsT;
}
而 OptionsT
是您在 schema.d.ts 中为构建器选项定义的接口。
您可以使用 browser
架构目标作为参考。
实现后,将您的构建器添加到 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"
}
}
}
在您的 angular.json 文件中:
"architect": {
...
"build": {
"builder": "./custom-builders:cool-builder"
"options": {
your options here
}
查看完整示例,请访问此库:https://github.com/meltedspark/angular-builders
对于使用Angular 8及更高版本的用户,构建器API现已正式支持和文档化:https://angular.io/guide/cli-builder
与以前的版本相比,它有很多变化,因此如果您正在使用未记录的Architect API,则从Angular 7迁移到8可能会变得复杂。
这是一篇不错的文章,可以帮助您入门:https://blog.angular.io/introducing-cli-builders-d012d4489f1b
我没有测试过,也不太确定,但这个概念可能是解决方案。
architect.build.builder
使用一些 Angular schematics 来执行构建过程。您可以创建自己的 schematics,使用/继承常规构建 schematics,并添加您想要实现的其他逻辑。