Skip to content

Commit 4493d78

Browse files
committed
fix(@schematics/angular): preserve workspace build version
1 parent f1ed025 commit 4493d78

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

packages/schematics/angular/migrations/use-application-builder/migration.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
externalSchematic,
1616
} from '@angular-devkit/schematics';
1717
import { dirname, join } from 'node:path/posix';
18+
import { getPackageJsonDependency } from '../../utility/dependencies';
1819
import {
1920
DependencyType,
2021
ExistingBehavior,
@@ -270,8 +271,11 @@ function updateProjects(tree: Tree, context: SchematicContext) {
270271
}
271272

272273
// Add direct @angular/build dependencies and remove @angular-devkit/build-angular
274+
const buildDependency =
275+
getPackageJsonDependency(tree, '@angular-devkit/build-angular') ??
276+
getPackageJsonDependency(tree, '@angular/build');
273277
rules.push(
274-
addDependency('@angular/build', latestVersions.DevkitBuildAngular, {
278+
addDependency('@angular/build', buildDependency?.version ?? latestVersions.AngularBuild, {
275279
type: DependencyType.Dev,
276280
existing: ExistingBehavior.Replace,
277281
}),

packages/schematics/angular/migrations/use-application-builder/migration_spec.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,23 @@ describe(`Migration to use the application builder`, () => {
450450
expect(devDependencies['postcss']).toBeUndefined();
451451
});
452452

453+
it('should reuse the installed builder version when migrating to "@angular/build"', async () => {
454+
tree.overwrite(
455+
'/package.json',
456+
JSON.stringify({
457+
devDependencies: {
458+
'@angular-devkit/build-angular': '~18.2.20',
459+
},
460+
}),
461+
);
462+
463+
const newTree = await schematicRunner.runSchematic(schematicName, {}, tree);
464+
465+
const { devDependencies } = JSON.parse(newTree.readContent('/package.json'));
466+
expect(devDependencies['@angular/build']).toBe('~18.2.20');
467+
expect(devDependencies['@angular-devkit/build-angular']).toBeUndefined();
468+
});
469+
453470
it('it should not add esModuleInterop and moduleResolution when module is preserve', async () => {
454471
tree.overwrite(
455472
'tsconfig.json',

0 commit comments

Comments
 (0)