From cf004715e7131de305afc919ff840289748fa36d Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 16 Feb 2021 20:16:32 -0500 Subject: [PATCH] fix(@angular/cli): support update migration packages with no entry points Some schematic only packages may not have entry points defined (`main`/`exports`). These type of packages will now be correctly resolved when attempting to locate update migrations. Fixes #20032 (cherry picked from commit 3d99468b455825fd97146e6496e7d712100e235a) --- packages/angular/cli/commands/update-impl.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/angular/cli/commands/update-impl.ts b/packages/angular/cli/commands/update-impl.ts index adb0bfae2add..26a75af269a2 100644 --- a/packages/angular/cli/commands/update-impl.ts +++ b/packages/angular/cli/commands/update-impl.ts @@ -665,7 +665,21 @@ export class UpdateCommand extends Command { `Resolving migration package '${migration.package}' from '${this.context.root}'...`, ); try { - packagePath = require.resolve(migration.package, { paths: [this.context.root] }); + try { + packagePath = path.dirname( + // This may fail if the `package.json` is not exported as an entry point + require.resolve(path.join(migration.package, 'package.json'), { + paths: [this.context.root], + }), + ); + } catch (e) { + if (e.code === 'MODULE_NOT_FOUND') { + // Fallback to trying to resolve the package's main entry point + packagePath = require.resolve(migration.package, { paths: [this.context.root] }); + } else { + throw e; + } + } } catch (e) { if (e.code === 'MODULE_NOT_FOUND') { logVerbose(e.toString());