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
指向builders.json的入口在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;
}
并且是您在schema.d.tsOptionsT
中为构建器选项定义的接口
您可以使用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 原理图来执行构建过程。您可以创建自己的原理图,该原理图使用/继承常规构建原理图以及您想要实现的附加逻辑。