From 01e4fbac87c0afa282b9f3138d6d135a50da62bb Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Thu, 20 Feb 2020 20:16:41 +0100 Subject: [PATCH] fix(ng-update): do not throw if project does not have dependencies (#18470) The v9 hammerjs migration in some cases tries to remove `hammerjs` from the workspace `package.json`. It always assumes that there is a `dependencies` property. This is not always guaranteed because a project doesn't need to define this property. This change guards against this case and avoids a runtime migration exception. Fixes #18469. --- .../upgrade-rules/hammer-gestures-v9/hammer-gestures-rule.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/material/schematics/ng-update/upgrade-rules/hammer-gestures-v9/hammer-gestures-rule.ts b/src/material/schematics/ng-update/upgrade-rules/hammer-gestures-v9/hammer-gestures-rule.ts index 8ec0f511a9f3..b4f8f8436a1d 100644 --- a/src/material/schematics/ng-update/upgrade-rules/hammer-gestures-v9/hammer-gestures-rule.ts +++ b/src/material/schematics/ng-update/upgrade-rules/hammer-gestures-v9/hammer-gestures-rule.ts @@ -853,9 +853,8 @@ export class HammerGesturesRule extends MigrationRule { const packageJson = JSON.parse(tree.read('/package.json')!.toString('utf8')); - // We do not handle the case where someone manually added "hammerjs" - // to the dev dependencies. - if (packageJson.dependencies[HAMMER_MODULE_SPECIFIER]) { + // We do not handle the case where someone manually added "hammerjs" to the dev dependencies. + if (packageJson.dependencies && packageJson.dependencies[HAMMER_MODULE_SPECIFIER]) { delete packageJson.dependencies[HAMMER_MODULE_SPECIFIER]; tree.overwrite('/package.json', JSON.stringify(packageJson, null, 2)); return true;