Skip to content

Commit 810d213

Browse files
clydinalan-agius4
authored andcommitted
feat(@angular/build): introduce new official build system package
The `@angular/build` package has been introduced to house the esbuild/Vite-based build system that was newly introduced as stable in v17. The existing `@angular-devkit/build-angular` package will continue to contain the Webpack-based build system and to ensure backwards compatibility it will also provide aliases for the esbuild/Vite-based build system. The changes here are the first stage of the builder transition and moves the `application` builder into the new package. The application builder can now be accessed when this package is installed directly via `@angular/build:application`. No changes are required for existing projects.
1 parent 2ef958a commit 810d213

File tree

222 files changed

+1357
-210
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

222 files changed

+1357
-210
lines changed

.monorepo.json

+11
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@
22
"packages": {
33
"@_/builders": {},
44
"devkit": {},
5+
"@angular/build": {
6+
"name": "Angular Build System",
7+
"section": "Tooling",
8+
"links": [
9+
{
10+
"label": "README",
11+
"url": "/packages/angular/build/README.md"
12+
}
13+
],
14+
"snapshotRepo": "angular/angular-build-builds"
15+
},
516
"@angular/cli": {
617
"name": "Angular CLI",
718
"section": "Tooling",

CONTRIBUTING.md

+1
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ The scope should be the name of the npm package affected as perceived by the per
211211
212212
The following is the list of supported scopes:
213213
214+
* **@angular/build**
214215
* **@angular/cli**
215216
* **@angular/create**
216217
* **@angular/pwa**

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ This is a monorepo which contains many tools and packages:
148148

149149
| Project | Package | Version | Links |
150150
|---|---|---|---|
151+
**Angular Build System** | [`@angular/build`](https://npmjs.com/package/@angular/build) | [![latest](https://img.shields.io/npm/v/%40angular%2Fbuild/latest.svg)](https://npmjs.com/package/@angular/build) | [![README](https://img.shields.io/badge/README--green.svg)](/packages/angular/build/README.md) [![snapshot](https://img.shields.io/badge/snapshot--blue.svg)](https://github.com/angular/angular-build-builds)
151152
**Angular CLI** | [`@angular/cli`](https://npmjs.com/package/@angular/cli) | [![latest](https://img.shields.io/npm/v/%40angular%2Fcli/latest.svg)](https://npmjs.com/package/@angular/cli) | [![README](https://img.shields.io/badge/README--green.svg)](/packages/angular/cli/README.md) [![snapshot](https://img.shields.io/badge/snapshot--blue.svg)](https://github.com/angular/cli-builds)
152153
**Architect CLI** | [`@angular-devkit/architect-cli`](https://npmjs.com/package/@angular-devkit/architect-cli) | [![latest](https://img.shields.io/npm/v/%40angular-devkit%2Farchitect-cli/latest.svg)](https://npmjs.com/package/@angular-devkit/architect-cli) | [![snapshot](https://img.shields.io/badge/snapshot--blue.svg)](https://github.com/angular/angular-devkit-architect-cli-builds)
153154
**Schematics CLI** | [`@angular-devkit/schematics-cli`](https://npmjs.com/package/@angular-devkit/schematics-cli) | [![latest](https://img.shields.io/npm/v/%40angular-devkit%2Fschematics-cli/latest.svg)](https://npmjs.com/package/@angular-devkit/schematics-cli) | [![snapshot](https://img.shields.io/badge/snapshot--blue.svg)](https://github.com/angular/angular-devkit-schematics-cli-builds)

goldens/circular-deps/packages.json

+9-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
[
22
[
3-
"packages/angular_devkit/build_angular/src/tools/esbuild/bundler-context.ts",
4-
"packages/angular_devkit/build_angular/src/tools/esbuild/utils.ts"
3+
"packages/angular/build/src/tools/esbuild/bundler-context.ts",
4+
"packages/angular/build/src/tools/esbuild/utils.ts"
55
],
66
[
7-
"packages/angular_devkit/build_angular/src/tools/esbuild/bundler-execution-result.ts",
8-
"packages/angular_devkit/build_angular/src/tools/esbuild/utils.ts"
7+
"packages/angular/build/src/tools/esbuild/bundler-execution-result.ts",
8+
"packages/angular/build/src/tools/esbuild/utils.ts"
9+
],
10+
[
11+
"packages/angular/build/src/tools/esbuild/bundler-context.ts",
12+
"packages/angular/build/src/tools/esbuild/utils.ts",
13+
"packages/angular/build/src/tools/esbuild/bundler-execution-result.ts"
914
],
1015
[
1116
"packages/angular/cli/src/analytics/analytics-collector.ts",
+112
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
## API Report File for "@angular/build"
2+
3+
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
4+
5+
```ts
6+
7+
/// <reference types="node" />
8+
9+
import { BuilderContext } from '@angular-devkit/architect';
10+
import { BuilderOutput } from '@angular-devkit/architect';
11+
import { OutputFile } from 'esbuild';
12+
import type { Plugin as Plugin_2 } from 'esbuild';
13+
14+
// @public
15+
export interface ApplicationBuilderOptions {
16+
allowedCommonJsDependencies?: string[];
17+
aot?: boolean;
18+
appShell?: boolean;
19+
assets?: AssetPattern[];
20+
baseHref?: string;
21+
browser: string;
22+
budgets?: Budget[];
23+
clearScreen?: boolean;
24+
crossOrigin?: CrossOrigin;
25+
define?: {
26+
[key: string]: string;
27+
};
28+
deleteOutputPath?: boolean;
29+
deployUrl?: string;
30+
externalDependencies?: string[];
31+
extractLicenses?: boolean;
32+
fileReplacements?: FileReplacement[];
33+
i18nDuplicateTranslation?: I18NTranslation;
34+
i18nMissingTranslation?: I18NTranslation;
35+
index: IndexUnion;
36+
inlineStyleLanguage?: InlineStyleLanguage;
37+
loader?: {
38+
[key: string]: any;
39+
};
40+
localize?: Localize;
41+
namedChunks?: boolean;
42+
optimization?: OptimizationUnion;
43+
outputHashing?: OutputHashing;
44+
outputPath: OutputPathUnion;
45+
poll?: number;
46+
polyfills?: string[];
47+
prerender?: PrerenderUnion;
48+
preserveSymlinks?: boolean;
49+
progress?: boolean;
50+
scripts?: ScriptElement[];
51+
server?: string;
52+
serviceWorker?: ServiceWorker_2;
53+
sourceMap?: SourceMapUnion;
54+
ssr?: SsrUnion;
55+
statsJson?: boolean;
56+
stylePreprocessorOptions?: StylePreprocessorOptions;
57+
styles?: StyleElement[];
58+
subresourceIntegrity?: boolean;
59+
tsConfig: string;
60+
verbose?: boolean;
61+
watch?: boolean;
62+
webWorkerTsConfig?: string;
63+
}
64+
65+
// @public (undocumented)
66+
export interface ApplicationBuilderOutput extends BuilderOutput {
67+
// (undocumented)
68+
assetFiles?: {
69+
source: string;
70+
destination: string;
71+
}[];
72+
// (undocumented)
73+
outputFiles?: BuildOutputFile[];
74+
}
75+
76+
// @public
77+
export function buildApplication(options: ApplicationBuilderOptions, context: BuilderContext, plugins?: Plugin_2[]): AsyncIterable<ApplicationBuilderOutput>;
78+
79+
// @public
80+
export function buildApplication(options: ApplicationBuilderOptions, context: BuilderContext, extensions?: ApplicationBuilderExtensions): AsyncIterable<ApplicationBuilderOutput>;
81+
82+
// @public (undocumented)
83+
export interface BuildOutputAsset {
84+
// (undocumented)
85+
destination: string;
86+
// (undocumented)
87+
source: string;
88+
}
89+
90+
// @public (undocumented)
91+
export interface BuildOutputFile extends OutputFile {
92+
// (undocumented)
93+
clone: () => BuildOutputFile;
94+
// (undocumented)
95+
type: BuildOutputFileType;
96+
}
97+
98+
// @public (undocumented)
99+
export enum BuildOutputFileType {
100+
// (undocumented)
101+
Browser = 1,
102+
// (undocumented)
103+
Media = 2,
104+
// (undocumented)
105+
Root = 4,
106+
// (undocumented)
107+
Server = 3
108+
}
109+
110+
// (No @packageDocumentation comment for this package)
111+
112+
```

goldens/public-api/angular_devkit/build_angular/index.md

+22-73
Original file line numberDiff line numberDiff line change
@@ -6,69 +6,22 @@
66

77
/// <reference types="node" />
88

9+
import { ApplicationBuilderOptions } from '@angular/build';
10+
import { buildApplication } from '@angular/build';
911
import { BuilderContext } from '@angular-devkit/architect';
1012
import { BuilderOutput } from '@angular-devkit/architect';
1113
import type { ConfigOptions } from 'karma';
1214
import { Configuration } from 'webpack';
1315
import { DevServerBuildOutput } from '@angular-devkit/build-webpack';
1416
import type http from 'node:http';
17+
import { IndexHtmlTransform } from '@angular/build/private';
1518
import { json } from '@angular-devkit/core';
1619
import { Observable } from 'rxjs';
17-
import { OutputFile } from 'esbuild';
1820
import type { Plugin as Plugin_2 } from 'esbuild';
1921
import webpack from 'webpack';
2022
import { WebpackLoggingCallback } from '@angular-devkit/build-webpack';
2123

22-
// @public
23-
export interface ApplicationBuilderOptions {
24-
allowedCommonJsDependencies?: string[];
25-
aot?: boolean;
26-
appShell?: boolean;
27-
assets?: AssetPattern_2[];
28-
baseHref?: string;
29-
browser: string;
30-
budgets?: Budget_2[];
31-
clearScreen?: boolean;
32-
crossOrigin?: CrossOrigin_2;
33-
define?: {
34-
[key: string]: string;
35-
};
36-
deleteOutputPath?: boolean;
37-
deployUrl?: string;
38-
externalDependencies?: string[];
39-
extractLicenses?: boolean;
40-
fileReplacements?: FileReplacement_2[];
41-
i18nDuplicateTranslation?: I18NTranslation_2;
42-
i18nMissingTranslation?: I18NTranslation_2;
43-
index: IndexUnion_2;
44-
inlineStyleLanguage?: InlineStyleLanguage_2;
45-
loader?: {
46-
[key: string]: any;
47-
};
48-
localize?: Localize_2;
49-
namedChunks?: boolean;
50-
optimization?: OptimizationUnion_2;
51-
outputHashing?: OutputHashing_2;
52-
outputPath: OutputPathUnion;
53-
poll?: number;
54-
polyfills?: string[];
55-
prerender?: PrerenderUnion;
56-
preserveSymlinks?: boolean;
57-
progress?: boolean;
58-
scripts?: ScriptElement_2[];
59-
server?: string;
60-
serviceWorker?: ServiceWorker_2;
61-
sourceMap?: SourceMapUnion_2;
62-
ssr?: SsrUnion;
63-
statsJson?: boolean;
64-
stylePreprocessorOptions?: StylePreprocessorOptions_2;
65-
styles?: StyleElement_2[];
66-
subresourceIntegrity?: boolean;
67-
tsConfig: string;
68-
verbose?: boolean;
69-
watch?: boolean;
70-
webWorkerTsConfig?: string;
71-
}
24+
export { ApplicationBuilderOptions }
7225

7326
// @public (undocumented)
7427
export type AssetPattern = AssetPatternObject | string;
@@ -150,11 +103,7 @@ export interface Budget {
150103
warning?: string;
151104
}
152105

153-
// @public
154-
export function buildApplication(options: ApplicationBuilderOptions, context: BuilderContext, plugins?: Plugin_2[]): AsyncIterable<ApplicationBuilderOutput>;
155-
156-
// @public
157-
export function buildApplication(options: ApplicationBuilderOptions, context: BuilderContext, extensions?: ApplicationBuilderExtensions): AsyncIterable<ApplicationBuilderOutput>;
106+
export { buildApplication }
158107

159108
// @public
160109
export enum CrossOrigin {
@@ -271,25 +220,25 @@ export interface FileReplacement {
271220

272221
// @public
273222
export interface KarmaBuilderOptions {
274-
assets?: AssetPattern_3[];
223+
assets?: AssetPattern_2[];
275224
browsers?: Browsers;
276225
codeCoverage?: boolean;
277226
codeCoverageExclude?: string[];
278227
exclude?: string[];
279-
fileReplacements?: FileReplacement_3[];
228+
fileReplacements?: FileReplacement_2[];
280229
include?: string[];
281-
inlineStyleLanguage?: InlineStyleLanguage_3;
230+
inlineStyleLanguage?: InlineStyleLanguage_2;
282231
karmaConfig?: string;
283232
main?: string;
284233
poll?: number;
285234
polyfills?: Polyfills_2;
286235
preserveSymlinks?: boolean;
287236
progress?: boolean;
288237
reporters?: string[];
289-
scripts?: ScriptElement_3[];
290-
sourceMap?: SourceMapUnion_3;
291-
stylePreprocessorOptions?: StylePreprocessorOptions_3;
292-
styles?: StyleElement_3[];
238+
scripts?: ScriptElement_2[];
239+
sourceMap?: SourceMapUnion_2;
240+
stylePreprocessorOptions?: StylePreprocessorOptions_2;
241+
styles?: StyleElement_2[];
293242
tsConfig: string;
294243
watch?: boolean;
295244
webWorkerTsConfig?: string;
@@ -347,29 +296,29 @@ export interface ProtractorBuilderOptions {
347296

348297
// @public (undocumented)
349298
export interface ServerBuilderOptions {
350-
assets?: AssetPattern_4[];
299+
assets?: AssetPattern_3[];
351300
buildOptimizer?: boolean;
352301
deleteOutputPath?: boolean;
353302
deployUrl?: string;
354303
externalDependencies?: string[];
355304
extractLicenses?: boolean;
356-
fileReplacements?: FileReplacement_4[];
357-
i18nDuplicateTranslation?: I18NTranslation_3;
358-
i18nMissingTranslation?: I18NTranslation_3;
359-
inlineStyleLanguage?: InlineStyleLanguage_4;
360-
localize?: Localize_3;
305+
fileReplacements?: FileReplacement_3[];
306+
i18nDuplicateTranslation?: I18NTranslation_2;
307+
i18nMissingTranslation?: I18NTranslation_2;
308+
inlineStyleLanguage?: InlineStyleLanguage_3;
309+
localize?: Localize_2;
361310
main: string;
362311
namedChunks?: boolean;
363-
optimization?: OptimizationUnion_3;
364-
outputHashing?: OutputHashing_3;
312+
optimization?: OptimizationUnion_2;
313+
outputHashing?: OutputHashing_2;
365314
outputPath: string;
366315
poll?: number;
367316
preserveSymlinks?: boolean;
368317
progress?: boolean;
369318
resourcesOutputPath?: string;
370-
sourceMap?: SourceMapUnion_4;
319+
sourceMap?: SourceMapUnion_3;
371320
statsJson?: boolean;
372-
stylePreprocessorOptions?: StylePreprocessorOptions_4;
321+
stylePreprocessorOptions?: StylePreprocessorOptions_3;
373322
tsConfig: string;
374323
vendorChunk?: boolean;
375324
verbose?: boolean;

0 commit comments

Comments
 (0)