From 96f72a8de780cd4b6753bf843d778357177b589b Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 24 Jun 2020 12:38:22 +0200 Subject: [PATCH 1/2] fix(@angular-devkit/build-angular): don't dedupe modules without a name or version We should not try to dedupe secondary entrypoints, or modules which don't have a name and a version. Closes #17967 --- .../plugins/dedupe-module-resolve-plugin.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/angular-cli-files/plugins/dedupe-module-resolve-plugin.ts b/packages/angular_devkit/build_angular/src/angular-cli-files/plugins/dedupe-module-resolve-plugin.ts index 5f89d25845da..f98eaab123ad 100644 --- a/packages/angular_devkit/build_angular/src/angular-cli-files/plugins/dedupe-module-resolve-plugin.ts +++ b/packages/angular_devkit/build_angular/src/angular-cli-files/plugins/dedupe-module-resolve-plugin.ts @@ -14,8 +14,8 @@ interface NormalModuleFactoryRequest { relativePath: string; path: string; descriptionFileData: { - name: string; - version: string; + name?: string; + version?: string; }; descriptionFileRoot: string; descriptionFilePath: string; @@ -45,6 +45,11 @@ export class DedupeModuleResolvePlugin { return; } + // Only try to dedupe modules which have a name and a version + if (!request.descriptionFileData.name || !request.descriptionFileData.version) { + return; + } + const moduleId = request.descriptionFileData.name + '@' + request.descriptionFileData.version; const prevResolvedModule = this.modules.get(moduleId); From b50326ed1b4667704abb7e5604d48daa38286d55 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 25 Jun 2020 16:14:03 +0200 Subject: [PATCH 2/2] fix(@angular-devkit/build-angular): don't dedupe linked modules Closes #18021 --- .../plugins/dedupe-module-resolve-plugin.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/angular_devkit/build_angular/src/angular-cli-files/plugins/dedupe-module-resolve-plugin.ts b/packages/angular_devkit/build_angular/src/angular-cli-files/plugins/dedupe-module-resolve-plugin.ts index f98eaab123ad..2910930dacfe 100644 --- a/packages/angular_devkit/build_angular/src/angular-cli-files/plugins/dedupe-module-resolve-plugin.ts +++ b/packages/angular_devkit/build_angular/src/angular-cli-files/plugins/dedupe-module-resolve-plugin.ts @@ -19,6 +19,8 @@ interface NormalModuleFactoryRequest { }; descriptionFileRoot: string; descriptionFilePath: string; + directory?: boolean; + file?: boolean; } export interface DedupeModuleResolvePluginOptions { @@ -45,7 +47,13 @@ export class DedupeModuleResolvePlugin { return; } - // Only try to dedupe modules which have a name and a version + // When either of these properties is undefined. It typically means it's a link. + // In which case we shouldn't try to dedupe it. + if (request.file === undefined || request.directory === undefined) { + return; + } + + // Empty name or versions are no valid primary entrypoints of a library if (!request.descriptionFileData.name || !request.descriptionFileData.version) { return; }