Skip to content

Commit da2554a

Browse files
alan-agius4alexeagle
authored andcommitted
fix(@schematics/angular): update @angular-devkit/build-ng-packagr when migrating
Closes #12642
1 parent f3330db commit da2554a

File tree

4 files changed

+91
-0
lines changed

4 files changed

+91
-0
lines changed

packages/schematics/angular/migrations/migration-collection.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@
2424
"version": "7.0.4",
2525
"factory": "./update-7",
2626
"description": "Update an Angular CLI project to version 7."
27+
},
28+
"migration-06": {
29+
"version": "7.0.3",
30+
"factory": "./update-7/index#updateDevkitBuildNgPackagr",
31+
"description": "Update an Angular CLI project to version 7."
2732
}
2833
}
2934
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* @license
3+
* Copyright Google Inc. All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.io/license
7+
*/
8+
import { Rule } from '@angular-devkit/schematics';
9+
import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks';
10+
import { addPackageJsonDependency, getPackageJsonDependency } from '../../utility/dependencies';
11+
import { latestVersions } from '../../utility/latest-versions';
12+
13+
export function updateDevkitBuildNgPackagr(): Rule {
14+
return (tree, context) => {
15+
const existing = getPackageJsonDependency(tree, '@angular-devkit/build-ng-packagr');
16+
17+
if (!existing) {
18+
return;
19+
}
20+
21+
addPackageJsonDependency(
22+
tree,
23+
{
24+
type: existing.type,
25+
name: '@angular-devkit/build-ng-packagr',
26+
version: latestVersions.DevkitBuildNgPackagr,
27+
overwrite: true,
28+
},
29+
);
30+
31+
context.addTask(new NodePackageInstallTask());
32+
};
33+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/**
2+
* @license
3+
* Copyright Google Inc. All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.io/license
7+
*/
8+
import { EmptyTree } from '@angular-devkit/schematics';
9+
import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing';
10+
import { latestVersions } from '../../utility/latest-versions';
11+
12+
const oldPkg = `
13+
{
14+
"devDependencies": {
15+
"@angular-devkit/build-angular": "0.0.0",
16+
"@angular-devkit/build-ng-packagr": "0.0.0"
17+
}
18+
}
19+
`;
20+
21+
describe('updateDevkitBuildNgPackagr', () => {
22+
const schematicRunner = new SchematicTestRunner(
23+
'migrations',
24+
require.resolve('../migration-collection.json'),
25+
);
26+
27+
let tree: UnitTestTree;
28+
29+
beforeEach(async () => {
30+
tree = new UnitTestTree(new EmptyTree());
31+
tree = await schematicRunner.runExternalSchematicAsync(
32+
require.resolve('../../collection.json'), 'ng-new',
33+
{
34+
name: 'migration-test',
35+
version: '1.2.3',
36+
directory: '.',
37+
},
38+
tree,
39+
).toPromise();
40+
});
41+
42+
it('should work as expected', async () => {
43+
tree.overwrite('/package.json', oldPkg);
44+
const tree2 = await schematicRunner.runSchematicAsync('migration-06', {}, tree.branch())
45+
.toPromise();
46+
47+
const content = tree2.readContent('/package.json');
48+
const pkg = JSON.parse(content);
49+
expect(pkg.devDependencies['@angular-devkit/build-ng-packagr'])
50+
.toBe(latestVersions.DevkitBuildNgPackagr);
51+
});
52+
});

packages/schematics/angular/migrations/update-7/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
import { latestVersions } from '../../utility/latest-versions';
1616

1717
export { polyfillMetadataRule } from './polyfill-metadata';
18+
export { updateDevkitBuildNgPackagr } from './devkit-ng-packagr';
1819

1920
export default function(): Rule {
2021
return (tree, context) => {

0 commit comments

Comments
 (0)