angular/angular-cli · warning
The "@angular-devkit/build-angular:ng-packagr" builder is de
Error message
The "@angular-devkit/build-angular:ng-packagr" builder is deprecated as part of Angular's Webpack support deprecation. Use "@angular/build:ng-packagr" instead. For more information, see https://angular.dev/tools/cli/build-system-migration.
What it means
The @angular-devkit/build-angular:ng-packagr builder emits a deprecation warning as part of Angular's Webpack support deprecation, pointing users to the esbuild-based @angular/build:ng-packagr builder.
Source
Thrown at packages/angular_devkit/build_angular/src/builders/ng-packagr/index.ts:25
*/
import { purgeStaleBuildCache } from '@angular/build/private';
import { BuilderContext, BuilderOutput, createBuilder } from '@angular-devkit/architect';
import type { NgPackagrOptions } from 'ng-packagr';
import { createRequire } from 'node:module';
import { join, resolve } from 'node:path';
import { Observable, catchError, from, map, of, switchMap } from 'rxjs';
import { normalizeCacheOptions } from '../../utils/normalize-cache';
import { Schema as NgPackagrBuilderOptions } from './schema';
/**
* @experimental Direct usage of this function is considered experimental.
*/
export function execute(
options: NgPackagrBuilderOptions,
context: BuilderContext,
): Observable<BuilderOutput> {
context.logger.warn(
'The "@angular-devkit/build-angular:ng-packagr" builder is deprecated as part of Angular\'s Webpack support deprecation. ' +
'Use "@angular/build:ng-packagr" instead. For more information, see https://angular.dev/tools/cli/build-system-migration.',
);
return from(
(async () => {
// Purge old build disk cache.
await purgeStaleBuildCache(context);
const root = context.workspaceRoot;
const workspaceRequire = createRequire(root + '/');
const ngPackagePath = workspaceRequire.resolve('ng-packagr');
const packager = (await import(ngPackagePath)).ngPackagr();
packager.forProject(resolve(root, options.project));
if (options.tsConfig) {
packager.withTsConfig(resolve(root, options.tsConfig));View on GitHub (pinned to bb72145f9a)
Solutions
- Switch the library build target's builder to @angular/build:ng-packagr in angular.json.
- Run `ng update` to apply the builder migration automatically.
- Suppress/ignore the warning until migration; the builder still works.
Example fix
// angular.json library architect/build target // before "builder": "@angular-devkit/build-angular:ng-packagr" // after "builder": "@angular/build:ng-packagr"
Defensive patterns
Strategy: fallback
Validate before calling
const cfg = require('./angular.json');
const usesDeprecated = JSON.stringify(cfg).includes('@angular-devkit/build-angular:ng-packagr');
if (usesDeprecated) console.warn('Migrate library builds to @angular/build:ng-packagr'); Prevention
- Migrate library targets to @angular/build:ng-packagr during upgrades.
- Run `ng update` rather than hand-merging angular.json.
- Add a CI check that fails on deprecated builder names.
When it happens
Trigger: Running `ng build` (or `ng packagr`) against a library project configured with the @angular-devkit/build-angular:ng-packagr builder on a recent Angular version.
Common situations: Library workspaces not yet migrated after `ng update`; build logs show repeated deprecation warnings.
Related errors
- The "@angular-devkit/build-angular:app-shell" builder is dep
- The "@angular-devkit/build-angular:karma" builder is depreca
- The "@angular-devkit/build-angular:server" builder is deprec
- The "@angular-devkit/build-angular:ssr-dev-server" builder i
- The "@angular-devkit/build-webpack:webpack-dev-server" build
AI-assisted analysis of angular/angular-cli@bb72145f9a (2026-08-30).
Data as JSON: /api/errors/c9369c36a407790b.
Report an issue: GitHub.