Angular DevKit Build Angular is a comprehensive build system facade that provides Architect builders for building and testing Angular applications and libraries. It serves as the primary build toolchain for Angular CLI, offering multiple builders for different targets including browser, server, testing, and library packaging.
npm install @angular-devkit/build-angularimport {
executeBrowserBuilder,
executeDevServerBuilder,
executeKarmaBuilder,
type BrowserBuilderOptions,
type DevServerBuilderOptions,
type KarmaBuilderOptions
} from "@angular-devkit/build-angular";For CommonJS:
const {
executeBrowserBuilder,
executeDevServerBuilder,
executeKarmaBuilder
} = require("@angular-devkit/build-angular");import { executeBrowserBuilder, type BrowserBuilderOptions } from "@angular-devkit/build-angular";
import { BuilderContext } from "@angular-devkit/architect";
// Configure browser build options
const options: BrowserBuilderOptions = {
outputPath: "dist/my-app",
index: "src/index.html",
main: "src/main.ts",
polyfills: ["zone.js"],
tsConfig: "tsconfig.app.json",
assets: ["src/favicon.ico", "src/assets"],
styles: ["src/styles.css"],
scripts: []
};
// Execute browser build
const buildResult = await executeBrowserBuilder(options, context).toPromise();Angular DevKit Build Angular is built around several key components:
Core builders for building Angular applications for different environments and targets.
function executeBrowserBuilder(
options: BrowserBuilderOptions,
context: BuilderContext,
transforms?: {
webpackConfiguration?: ExecutionTransformer<webpack.Configuration>;
logging?: WebpackLoggingCallback;
indexHtml?: IndexHtmlTransform;
}
): Observable<BrowserBuilderOutput>;
interface BrowserBuilderOutput extends BuilderOutput {
stats: BuildEventStats;
baseOutputPath: string;
outputs: {
locale?: string;
path: string;
baseHref?: string;
}[];
}Development server with live reloading and hot module replacement for Angular applications.
function executeDevServerBuilder(
options: DevServerBuilderOptions,
context: BuilderContext
): Observable<DevServerBuilderOutput>;
interface DevServerBuilderOptions {
buildTarget: string;
port?: number;
host?: string;
proxyConfig?: string;
ssl?: boolean;
sslKey?: string;
sslCert?: string;
open?: boolean;
liveReload?: boolean;
publicHost?: string;
disableHostCheck?: boolean;
servePath?: string;
headers?: Record<string, string>;
}Testing infrastructure supporting multiple test runners including Karma, Jest, and Web Test Runner.
function executeKarmaBuilder(
options: KarmaBuilderOptions,
context: BuilderContext,
transforms?: {
webpackConfiguration?: ExecutionTransformer<Configuration>;
karmaOptions?: (options: KarmaConfigOptions) => KarmaConfigOptions;
}
): Observable<BuilderOutput>;
interface KarmaBuilderOptions {
main: string;
tsConfig: string;
karmaConfig?: string;
polyfills?: string | string[];
assets?: AssetPattern[];
styles?: (string | StyleElement)[];
scripts?: (string | ScriptElement)[];
watch?: boolean;
browsers?: string | false;
codeCoverage?: boolean;
codeCoverageExclude?: string[];
fileReplacements?: FileReplacement[];
reporters?: string[];
include?: string | string[];
}
interface JestBuilderOptions {
tsConfig: string;
include?: string[];
exclude?: string[];
polyfills?: string[];
aot?: boolean;
}
interface WebTestRunnerBuilderOptions {
tsConfig: string;
main?: string;
polyfills?: string | string[];
assets?: AssetPattern[];
styles?: (string | StyleElement)[];
scripts?: (string | ScriptElement)[];
include?: string[];
exclude?: string[];
sourceMap?: boolean | SourceMapOptions;
progress?: boolean;
watch?: boolean;
poll?: number;
browsers?: string;
codeCoverage?: boolean;
codeCoverageExclude?: string[];
fileReplacements?: FileReplacement[];
aot?: boolean;
}Builders for Angular Universal server-side rendering and static site generation.
function executeServerBuilder(
options: ServerBuilderOptions,
context: BuilderContext,
transforms?: {
webpackConfiguration?: ExecutionTransformer<webpack.Configuration>;
}
): Observable<ServerBuilderOutput>;
function execute as executePrerenderBuilder(
options: PrerenderBuilderOptions,
context: BuilderContext
): Promise<BuilderOutput>;
interface ServerBuilderOutput extends BuilderOutput {
baseOutputPath: string;
outputPath: string;
outputs: {
locale?: string;
path: string;
}[];
}
interface PrerenderBuilderOptions {
browserTarget: string;
serverTarget: string;
routes?: string[];
routesFile?: string;
discoverRoutes?: boolean;
}Library builders for creating distributable Angular libraries.
function executeNgPackagrBuilder(
options: NgPackagrBuilderOptions,
context: BuilderContext
): Observable<BuilderOutput>;
function executeExtractI18nBuilder(
options: ExtractI18nBuilderOptions,
context: BuilderContext
): Observable<BuilderOutput>;type ExecutionTransformer<T> = (input: T) => T | Promise<T>;
interface AssetPattern {
input: string;
output?: string;
glob: string;
ignore?: string[];
}
interface FileReplacement {
src: string;
replaceWith: string;
}
interface Budget {
type: 'bundle' | 'initial' | 'allScript' | 'all' | 'anyComponentStyle' | 'any';
name?: string;
baseline?: string;
maximumWarning?: string;
maximumError?: string;
minimumWarning?: string;
minimumError?: string;
warning?: string;
error?: string;
}
enum CrossOrigin {
None = 'none',
Anonymous = 'anonymous',
UseCredentials = 'use-credentials'
}
enum OutputHashing {
None = 'none',
All = 'all',
Media = 'media',
Bundles = 'bundles'
}
interface StyleElement {
input: string;
bundleName?: string;
inject?: boolean;
}
interface ScriptElement {
input: string;
bundleName?: string;
inject?: boolean;
}// Re-exported from @angular-devkit/architect/testing
// Complete testing utilities for unit testing builders