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

  1. Switch the library build target's builder to @angular/build:ng-packagr in angular.json.
  2. Run `ng update` to apply the builder migration automatically.
  3. 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

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


AI-assisted analysis of angular/angular-cli@bb72145f9a (2026-08-30). Data as JSON: /api/errors/c9369c36a407790b. Report an issue: GitHub.