From 58daae59d050d0b6eeba3d88c53e048b0b20cb37 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 14 Nov 2019 18:46:40 +0100 Subject: [PATCH 1/2] fix(@angular-devkit/schematics): only commit to disk when contents of file changes Fixes: #16191 --- packages/angular_devkit/schematics/src/tree/host-tree.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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(); From f2a13854ba22a8b7163f3175aaea168bc5a45c6c Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 14 Nov 2019 18:47:32 +0100 Subject: [PATCH 2/2] fix(@schematics/angular): only remove `tslib` from package.json when it's not a dependency Fixes: #16191 --- .../angular/migrations/update-9/add-tslib.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) 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, }); }; }