From 02825eec53456384ba5b9c19f25dde3cfc95d796 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 6 Jan 2025 12:06:24 -0500 Subject: [PATCH] feat(@schematics/angular): use `@angular/build` package in library generation schematic The newly introduced `ng-packagr` builder within the `@angular/build` package is now used when generating a new library with `ng generate library`. This builder provides the same functionality as the `ng-packagr` builder found within the `@angular-devkit/build-angular` package but removes the need for projects to install `@angular-devkit/build-angular` if using the `application` builder from `@angular/build`. --- packages/schematics/angular/library/index.ts | 6 +++--- packages/schematics/angular/library/index_spec.ts | 4 +--- packages/schematics/angular/utility/latest-versions.ts | 2 ++ packages/schematics/angular/utility/workspace-models.ts | 1 + 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/schematics/angular/library/index.ts b/packages/schematics/angular/library/index.ts index ab471db6367a..715a84361bf9 100644 --- a/packages/schematics/angular/library/index.ts +++ b/packages/schematics/angular/library/index.ts @@ -53,8 +53,8 @@ function addDependenciesToPackageJson() { }, { type: NodeDependencyType.Dev, - name: '@angular-devkit/build-angular', - version: latestVersions.DevkitBuildAngular, + name: '@angular/build', + version: latestVersions.AngularBuild, }, { type: NodeDependencyType.Dev, @@ -91,7 +91,7 @@ function addLibToWorkspaceFile( prefix: options.prefix, targets: { build: { - builder: Builders.NgPackagr, + builder: Builders.BuildNgPackagr, defaultConfiguration: 'production', options: { project: `${projectRoot}/ng-package.json`, diff --git a/packages/schematics/angular/library/index_spec.ts b/packages/schematics/angular/library/index_spec.ts index d08b44d605d5..800839ef2b90 100644 --- a/packages/schematics/angular/library/index_spec.ts +++ b/packages/schematics/angular/library/index_spec.ts @@ -388,9 +388,7 @@ describe('Library Schematic', () => { const tree = await schematicRunner.runSchematic('library', defaultOptions, workspaceTree); const workspace = JSON.parse(tree.readContent('/angular.json')); - expect(workspace.projects.foo.architect.build.builder).toBe( - '@angular-devkit/build-angular:ng-packagr', - ); + expect(workspace.projects.foo.architect.build.builder).toBe('@angular/build:ng-packagr'); }); describe('standalone=false', () => { diff --git a/packages/schematics/angular/utility/latest-versions.ts b/packages/schematics/angular/utility/latest-versions.ts index a95ebc11e9c7..38a7cb2cbb13 100644 --- a/packages/schematics/angular/utility/latest-versions.ts +++ b/packages/schematics/angular/utility/latest-versions.ts @@ -13,6 +13,7 @@ const dependencies = require('./latest-versions/package.json')['dependencies']; export const latestVersions: Record & { Angular: string; DevkitBuildAngular: string; + AngularBuild: string; AngularSSR: string; } = { ...dependencies, @@ -21,5 +22,6 @@ export const latestVersions: Record & { Angular: dependencies['@angular/core'], DevkitBuildAngular: '^0.0.0-PLACEHOLDER', + AngularBuild: '^0.0.0-PLACEHOLDER', AngularSSR: '^0.0.0-PLACEHOLDER', }; diff --git a/packages/schematics/angular/utility/workspace-models.ts b/packages/schematics/angular/utility/workspace-models.ts index 41c41345f736..fd7eaf4d60f4 100644 --- a/packages/schematics/angular/utility/workspace-models.ts +++ b/packages/schematics/angular/utility/workspace-models.ts @@ -28,6 +28,7 @@ export enum Builders { Karma = '@angular-devkit/build-angular:karma', TsLint = '@angular-devkit/build-angular:tslint', NgPackagr = '@angular-devkit/build-angular:ng-packagr', + BuildNgPackagr = '@angular/build:ng-packagr', DevServer = '@angular-devkit/build-angular:dev-server', ExtractI18n = '@angular-devkit/build-angular:extract-i18n', Protractor = '@angular-devkit/build-angular:private-protractor',