What are Builders?
Builders are the underlying execution engine for Angular CLI commands. They are part of the Angular Architect API and define how commands likeng build, ng test, and ng serve actually work. Each builder is a function that performs a specific task according to a target configuration defined in angular.json.
Builders are similar to webpack plugins or Gulp tasks - they’re modular units that perform specific build operations.
Builder Architecture
The Angular CLI uses the Architect system to run builders:Key Concepts
Target
A named builder configuration in angular.json (e.g., “build”, “test”)
Builder
The actual implementation that performs the work
Options
Configuration parameters passed to the builder
Configurations
Named option overrides (e.g., “production”, “development”)
Official Builders
Angular provides several official builders:Application Builders
- @angular/build:application
- @angular-devkit/build-angular:browser
The modern application builder (Angular v17+) using esbuild and Vite.Features:
- Fast builds with esbuild
- Improved development server
- Better optimization
- SSR/SSG support out of the box
Angular v17+ recommends using
@angular/build:application for new projects.Development Server Builders
@angular/build:dev-server
Development server for the application builder:buildTarget: Which build configuration to serveport: Development server porthost: Host addressssl: Enable HTTPSproxyConfig: API proxy configuration
Test Builder
@angular-devkit/build-angular:karma
Runs unit tests with Karma:karmaConfig: Path to Karma configurationwatch: Watch files for changescodeCoverage: Generate coverage reportsbrowsers: Browsers to run tests in
Internationalization Builder
@angular/build:extract-i18n
Extracts i18n messages from templates:Lint Builder
@angular/build:tslint
Runs TSLint on the project:Builder Options
Common Options
These options are available across multiple builders:Output Configuration
Output Configuration
Source Files
Source Files
TypeScript Configuration
TypeScript Configuration
Assets & Resources
Assets & Resources
Optimization
Optimization
Performance Budgets
Performance Budgets
array
Size budgets for application
Build Configurations
Configurations are named sets of option overrides:Using Configurations
Custom Builders
You can create custom builders for specialized build tasks.Creating a Custom Builder
1
Create Builder Package
2
Define Builder Schema
Create
schema.json:3
Implement Builder
4
Register Builder
Add to
builders.json:5
Use in angular.json
Running Custom Builder
Builder Context
Builders receive aBuilderContext with useful utilities:
File Replacements
Replace files during build based on configuration:Build Optimization Strategies
Code Splitting
Tree Shaking
Enabled automatically with optimization:Differential Loading
Generate separate bundles for modern and legacy browsers:Performance Budgets
Set size limits to maintain performance:- Initial Budget
- Component Styles
- All Scripts
- Lazy Bundles
Proxy Configuration
Configure API proxying for development: proxy.conf.json:Build Events
Builders emit events during execution:Next Steps
Schematics
Create custom code generators
CLI Commands
Master all Angular CLI commands
Resources
Architect API
Official builder documentation
Builder Examples
Angular DevKit builders source
