Skip to content

Commit

Permalink
feat(@angular/build): introduce new official build system package
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
clydin authored and alan-agius4 committed Apr 18, 2024
1 parent 2ef958a commit 810d213
Show file tree
Hide file tree
Showing 222 changed files with 1,357 additions and 210 deletions.
11 changes: 11 additions & 0 deletions .monorepo.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@
"packages": {
"@_/builders": {},
"devkit": {},
"@angular/build": {
"name": "Angular Build System",
"section": "Tooling",
"links": [
{
"label": "README",
"url": "/packages/angular/build/README.md"
}
],
"snapshotRepo": "angular/angular-build-builds"
},
"@angular/cli": {
"name": "Angular CLI",
"section": "Tooling",
Expand Down
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ The scope should be the name of the npm package affected as perceived by the per

The following is the list of supported scopes:

* **@angular/build**
* **@angular/cli**
* **@angular/create**
* **@angular/pwa**
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ This is a monorepo which contains many tools and packages:

| Project | Package | Version | Links |
|---|---|---|---|
**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)
**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)
**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)
**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)
Expand Down
13 changes: 9 additions & 4 deletions goldens/circular-deps/packages.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
[
[
"packages/angular_devkit/build_angular/src/tools/esbuild/bundler-context.ts",
"packages/angular_devkit/build_angular/src/tools/esbuild/utils.ts"
"packages/angular/build/src/tools/esbuild/bundler-context.ts",
"packages/angular/build/src/tools/esbuild/utils.ts"
],
[
"packages/angular_devkit/build_angular/src/tools/esbuild/bundler-execution-result.ts",
"packages/angular_devkit/build_angular/src/tools/esbuild/utils.ts"
"packages/angular/build/src/tools/esbuild/bundler-execution-result.ts",
"packages/angular/build/src/tools/esbuild/utils.ts"
],
[
"packages/angular/build/src/tools/esbuild/bundler-context.ts",
"packages/angular/build/src/tools/esbuild/utils.ts",
"packages/angular/build/src/tools/esbuild/bundler-execution-result.ts"
],
[
"packages/angular/cli/src/analytics/analytics-collector.ts",
Expand Down
112 changes: 112 additions & 0 deletions goldens/public-api/angular/build/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
## API Report File for "@angular/build"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts

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

import { BuilderContext } from '@angular-devkit/architect';
import { BuilderOutput } from '@angular-devkit/architect';
import { OutputFile } from 'esbuild';
import type { Plugin as Plugin_2 } from 'esbuild';

// @public
export interface ApplicationBuilderOptions {
allowedCommonJsDependencies?: string[];
aot?: boolean;
appShell?: boolean;
assets?: AssetPattern[];
baseHref?: string;
browser: string;
budgets?: Budget[];
clearScreen?: boolean;
crossOrigin?: CrossOrigin;
define?: {
[key: string]: string;
};
deleteOutputPath?: boolean;
deployUrl?: string;
externalDependencies?: string[];
extractLicenses?: boolean;
fileReplacements?: FileReplacement[];
i18nDuplicateTranslation?: I18NTranslation;
i18nMissingTranslation?: I18NTranslation;
index: IndexUnion;
inlineStyleLanguage?: InlineStyleLanguage;
loader?: {
[key: string]: any;
};
localize?: Localize;
namedChunks?: boolean;
optimization?: OptimizationUnion;
outputHashing?: OutputHashing;
outputPath: OutputPathUnion;
poll?: number;
polyfills?: string[];
prerender?: PrerenderUnion;
preserveSymlinks?: boolean;
progress?: boolean;
scripts?: ScriptElement[];
server?: string;
serviceWorker?: ServiceWorker_2;
sourceMap?: SourceMapUnion;
ssr?: SsrUnion;
statsJson?: boolean;
stylePreprocessorOptions?: StylePreprocessorOptions;
styles?: StyleElement[];
subresourceIntegrity?: boolean;
tsConfig: string;
verbose?: boolean;
watch?: boolean;
webWorkerTsConfig?: string;
}

// @public (undocumented)
export interface ApplicationBuilderOutput extends BuilderOutput {
// (undocumented)
assetFiles?: {
source: string;
destination: string;
}[];
// (undocumented)
outputFiles?: BuildOutputFile[];
}

// @public
export function buildApplication(options: ApplicationBuilderOptions, context: BuilderContext, plugins?: Plugin_2[]): AsyncIterable<ApplicationBuilderOutput>;

// @public
export function buildApplication(options: ApplicationBuilderOptions, context: BuilderContext, extensions?: ApplicationBuilderExtensions): AsyncIterable<ApplicationBuilderOutput>;

// @public (undocumented)
export interface BuildOutputAsset {
// (undocumented)
destination: string;
// (undocumented)
source: string;
}

// @public (undocumented)
export interface BuildOutputFile extends OutputFile {
// (undocumented)
clone: () => BuildOutputFile;
// (undocumented)
type: BuildOutputFileType;
}

// @public (undocumented)
export enum BuildOutputFileType {
// (undocumented)
Browser = 1,
// (undocumented)
Media = 2,
// (undocumented)
Root = 4,
// (undocumented)
Server = 3
}

// (No @packageDocumentation comment for this package)

```
95 changes: 22 additions & 73 deletions goldens/public-api/angular_devkit/build_angular/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,69 +6,22 @@

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

import { ApplicationBuilderOptions } from '@angular/build';
import { buildApplication } from '@angular/build';
import { BuilderContext } from '@angular-devkit/architect';
import { BuilderOutput } from '@angular-devkit/architect';
import type { ConfigOptions } from 'karma';
import { Configuration } from 'webpack';
import { DevServerBuildOutput } from '@angular-devkit/build-webpack';
import type http from 'node:http';
import { IndexHtmlTransform } from '@angular/build/private';
import { json } from '@angular-devkit/core';
import { Observable } from 'rxjs';
import { OutputFile } from 'esbuild';
import type { Plugin as Plugin_2 } from 'esbuild';
import webpack from 'webpack';
import { WebpackLoggingCallback } from '@angular-devkit/build-webpack';

// @public
export interface ApplicationBuilderOptions {
allowedCommonJsDependencies?: string[];
aot?: boolean;
appShell?: boolean;
assets?: AssetPattern_2[];
baseHref?: string;
browser: string;
budgets?: Budget_2[];
clearScreen?: boolean;
crossOrigin?: CrossOrigin_2;
define?: {
[key: string]: string;
};
deleteOutputPath?: boolean;
deployUrl?: string;
externalDependencies?: string[];
extractLicenses?: boolean;
fileReplacements?: FileReplacement_2[];
i18nDuplicateTranslation?: I18NTranslation_2;
i18nMissingTranslation?: I18NTranslation_2;
index: IndexUnion_2;
inlineStyleLanguage?: InlineStyleLanguage_2;
loader?: {
[key: string]: any;
};
localize?: Localize_2;
namedChunks?: boolean;
optimization?: OptimizationUnion_2;
outputHashing?: OutputHashing_2;
outputPath: OutputPathUnion;
poll?: number;
polyfills?: string[];
prerender?: PrerenderUnion;
preserveSymlinks?: boolean;
progress?: boolean;
scripts?: ScriptElement_2[];
server?: string;
serviceWorker?: ServiceWorker_2;
sourceMap?: SourceMapUnion_2;
ssr?: SsrUnion;
statsJson?: boolean;
stylePreprocessorOptions?: StylePreprocessorOptions_2;
styles?: StyleElement_2[];
subresourceIntegrity?: boolean;
tsConfig: string;
verbose?: boolean;
watch?: boolean;
webWorkerTsConfig?: string;
}
export { ApplicationBuilderOptions }

// @public (undocumented)
export type AssetPattern = AssetPatternObject | string;
Expand Down Expand Up @@ -150,11 +103,7 @@ export interface Budget {
warning?: string;
}

// @public
export function buildApplication(options: ApplicationBuilderOptions, context: BuilderContext, plugins?: Plugin_2[]): AsyncIterable<ApplicationBuilderOutput>;

// @public
export function buildApplication(options: ApplicationBuilderOptions, context: BuilderContext, extensions?: ApplicationBuilderExtensions): AsyncIterable<ApplicationBuilderOutput>;
export { buildApplication }

// @public
export enum CrossOrigin {
Expand Down Expand Up @@ -271,25 +220,25 @@ export interface FileReplacement {

// @public
export interface KarmaBuilderOptions {
assets?: AssetPattern_3[];
assets?: AssetPattern_2[];
browsers?: Browsers;
codeCoverage?: boolean;
codeCoverageExclude?: string[];
exclude?: string[];
fileReplacements?: FileReplacement_3[];
fileReplacements?: FileReplacement_2[];
include?: string[];
inlineStyleLanguage?: InlineStyleLanguage_3;
inlineStyleLanguage?: InlineStyleLanguage_2;
karmaConfig?: string;
main?: string;
poll?: number;
polyfills?: Polyfills_2;
preserveSymlinks?: boolean;
progress?: boolean;
reporters?: string[];
scripts?: ScriptElement_3[];
sourceMap?: SourceMapUnion_3;
stylePreprocessorOptions?: StylePreprocessorOptions_3;
styles?: StyleElement_3[];
scripts?: ScriptElement_2[];
sourceMap?: SourceMapUnion_2;
stylePreprocessorOptions?: StylePreprocessorOptions_2;
styles?: StyleElement_2[];
tsConfig: string;
watch?: boolean;
webWorkerTsConfig?: string;
Expand Down Expand Up @@ -347,29 +296,29 @@ export interface ProtractorBuilderOptions {

// @public (undocumented)
export interface ServerBuilderOptions {
assets?: AssetPattern_4[];
assets?: AssetPattern_3[];
buildOptimizer?: boolean;
deleteOutputPath?: boolean;
deployUrl?: string;
externalDependencies?: string[];
extractLicenses?: boolean;
fileReplacements?: FileReplacement_4[];
i18nDuplicateTranslation?: I18NTranslation_3;
i18nMissingTranslation?: I18NTranslation_3;
inlineStyleLanguage?: InlineStyleLanguage_4;
localize?: Localize_3;
fileReplacements?: FileReplacement_3[];
i18nDuplicateTranslation?: I18NTranslation_2;
i18nMissingTranslation?: I18NTranslation_2;
inlineStyleLanguage?: InlineStyleLanguage_3;
localize?: Localize_2;
main: string;
namedChunks?: boolean;
optimization?: OptimizationUnion_3;
outputHashing?: OutputHashing_3;
optimization?: OptimizationUnion_2;
outputHashing?: OutputHashing_2;
outputPath: string;
poll?: number;
preserveSymlinks?: boolean;
progress?: boolean;
resourcesOutputPath?: string;
sourceMap?: SourceMapUnion_4;
sourceMap?: SourceMapUnion_3;
statsJson?: boolean;
stylePreprocessorOptions?: StylePreprocessorOptions_4;
stylePreprocessorOptions?: StylePreprocessorOptions_3;
tsConfig: string;
vendorChunk?: boolean;
verbose?: boolean;
Expand Down
Loading

0 comments on commit 810d213

Please sign in to comment.