From ea571aa9d116dd3603ce422b8935eea8ae144ee2 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Mon, 29 Oct 2018 13:04:15 -0700 Subject: [PATCH] build(bazel): generalize fix for AMD name for flat module out file (#26837) PR Close #26837 --- packages/bazel/src/ngc-wrapped/index.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/bazel/src/ngc-wrapped/index.ts b/packages/bazel/src/ngc-wrapped/index.ts index 9354f3cf1d..9996aa2733 100644 --- a/packages/bazel/src/ngc-wrapped/index.ts +++ b/packages/bazel/src/ngc-wrapped/index.ts @@ -209,16 +209,20 @@ export function compile({allowNonHermeticReads, allDepsCompiledWithBazel = true, // compilationTargetSrc. // However we still want to give it an AMD module name for devmode. // We can't easily tell which file is the synthetic one, so we build up the path we expect - // it to have - // and compare against that. + // it to have and compare against that. if (fileName === path.join(compilerOpts.baseUrl, bazelOpts.package, compilerOpts.flatModuleOutFile + '.ts')) return true; - // Also handle the case when angular is built from source as an external repository - if (fileName === - path.join( - compilerOpts.baseUrl, 'external/angular', bazelOpts.package, - compilerOpts.flatModuleOutFile + '.ts')) + // Also handle the case the target is in an external repository. + // Pull the workspace name from the target which is formatted as `@wksp//package:target` + // if it the target is from an external workspace. If the target is from the local + // workspace then it will be formatted as `//package:target`. + const targetWorkspace = bazelOpts.target.split('/')[0].replace(/^@/, ''); + if (targetWorkspace && + fileName === + path.join( + compilerOpts.baseUrl, 'external', targetWorkspace, bazelOpts.package, + compilerOpts.flatModuleOutFile + '.ts')) return true; return origBazelHostShouldNameModule(fileName) || NGC_GEN_FILES.test(fileName); };