From a35642fa0789adc67a476d5e518b2482dd405238 Mon Sep 17 00:00:00 2001 From: Jon Rimmer Date: Fri, 20 Apr 2018 14:22:45 +0100 Subject: [PATCH] fix(@ngtools/webpack): Validate wildcard path replacements --- packages/ngtools/webpack/src/paths-plugin.ts | 29 ++++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/packages/ngtools/webpack/src/paths-plugin.ts b/packages/ngtools/webpack/src/paths-plugin.ts index 846648d0ae..e8bb776cd4 100644 --- a/packages/ngtools/webpack/src/paths-plugin.ts +++ b/packages/ngtools/webpack/src/paths-plugin.ts @@ -96,10 +96,33 @@ export function resolveWithPaths( replacement = prefix + pathMapOptions[0].partial + suffix; } - request.request = path.resolve(compilerOptions.baseUrl || '', replacement); - callback(null, request); + replacement = path.resolve(compilerOptions.baseUrl || '', replacement); - return; + if (host.fileExists(replacement)) { + // Found a definite match + request.request = replacement; + callback(null, request); + return; + } + else { + // Could be an extensionless import that TS can resolve? + const moduleResolver = ts.resolveModuleName( + replacement, + request.contextInfo.issuer, + compilerOptions, + host, + cache, + ); + + const moduleFilePath = moduleResolver.resolvedModule + && moduleResolver.resolvedModule.resolvedFileName; + + if (moduleFilePath) { + request.request = moduleFilePath; + callback(null, request); + return; + } + } } const moduleResolver = ts.resolveModuleName(