diff --git a/packages/angular_devkit/schematics/src/tree/host-tree.ts b/packages/angular_devkit/schematics/src/tree/host-tree.ts index fbd626c6a8d2..eab9c9d3809c 100644 --- a/packages/angular_devkit/schematics/src/tree/host-tree.ts +++ b/packages/angular_devkit/schematics/src/tree/host-tree.ts @@ -341,7 +341,9 @@ export class HostTree implements Tree { throw new ContentHasMutatedException(path); } else { const newContent = record.apply(entry.content); - this.overwrite(path, newContent); + if (!newContent.equals(entry.content)) { + this.overwrite(path, newContent); + } } } else { throw new InvalidUpdateRecordException(); diff --git a/packages/schematics/angular/migrations/update-9/add-tslib.ts b/packages/schematics/angular/migrations/update-9/add-tslib.ts index ad562fcb41c0..ca4eca9fa776 100644 --- a/packages/schematics/angular/migrations/update-9/add-tslib.ts +++ b/packages/schematics/angular/migrations/update-9/add-tslib.ts @@ -6,16 +6,22 @@ * found in the LICENSE file at https://angular.io/license */ import { Rule } from '@angular-devkit/schematics'; -import { NodeDependencyType, addPackageJsonDependency, removePackageJsonDependency } from '../../utility/dependencies'; +import { NodeDependencyType, addPackageJsonDependency, getPackageJsonDependency, removePackageJsonDependency } from '../../utility/dependencies'; import { latestVersions } from '../../utility/latest-versions'; export function addTsLib(): Rule { return host => { - removePackageJsonDependency(host, 'tslib'); + const tslibDep = getPackageJsonDependency(host, 'tslib'); + + if (tslibDep && tslibDep.type !== NodeDependencyType.Default) { + removePackageJsonDependency(host, 'tslib'); + } + addPackageJsonDependency(host, { - name: 'tslib', - version: latestVersions.TsLib, - type: NodeDependencyType.Default, + name: 'tslib', + version: latestVersions.TsLib, + type: NodeDependencyType.Default, + overwrite: true, }); }; }