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..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 @@ -14,11 +14,13 @@ interface NormalModuleFactoryRequest { relativePath: string; path: string; descriptionFileData: { - name: string; - version: string; + name?: string; + version?: string; }; descriptionFileRoot: string; descriptionFilePath: string; + directory?: boolean; + file?: boolean; } export interface DedupeModuleResolvePluginOptions { @@ -45,6 +47,17 @@ export class DedupeModuleResolvePlugin { return; } + // 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; + } + const moduleId = request.descriptionFileData.name + '@' + request.descriptionFileData.version; const prevResolvedModule = this.modules.get(moduleId);