From b3a14d05629ba6e3b23c09b1bfdbc4b35d534813 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 11 Jul 2022 11:49:32 -0400 Subject: [PATCH] fix(@angular-devkit/build-angular): allow third-party sourcemaps to be ignored in esbuild builder The `sourcemap.vendor` build option for the esbuild-based browser application builder will now properly be considered when processing sourcemaps for third-party code (code originating from a `node_modules` directory). --- .../browser-esbuild/compiler-plugin.ts | 19 ++++++++++++++++--- .../src/builders/browser-esbuild/index.ts | 1 + 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/compiler-plugin.ts b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/compiler-plugin.ts index 85220ef735c1..99db5d2bd6b0 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/compiler-plugin.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/compiler-plugin.ts @@ -116,7 +116,12 @@ function convertTypeScriptDiagnostic( // This is a non-watch version of the compiler code from `@ngtools/webpack` augmented for esbuild // eslint-disable-next-line max-lines-per-function export function createCompilerPlugin( - pluginOptions: { sourcemap: boolean; tsconfig: string; advancedOptimizations?: boolean }, + pluginOptions: { + sourcemap: boolean; + tsconfig: string; + advancedOptimizations?: boolean; + thirdPartySourcemaps?: boolean; + }, styleOptions: BundleStylesheetOptions, ): Plugin { return { @@ -318,10 +323,14 @@ export function createCompilerPlugin( }; } + const useInputSourcemap = + pluginOptions.sourcemap && + (!!pluginOptions.thirdPartySourcemaps || !/[\\/]node_modules[\\/]/.test(args.path)); + const data = typescriptResult.content ?? ''; const babelResult = await transformAsync(data, { filename: args.path, - inputSourceMap: (pluginOptions.sourcemap ? undefined : false) as undefined, + inputSourceMap: (useInputSourcemap ? undefined : false) as undefined, sourceMaps: pluginOptions.sourcemap ? 'inline' : false, compact: false, configFile: false, @@ -355,10 +364,14 @@ export function createCompilerPlugin( ) ).createEs2015LinkerPlugin; + const useInputSourcemap = + pluginOptions.sourcemap && + (!!pluginOptions.thirdPartySourcemaps || !/[\\/]node_modules[\\/]/.test(args.path)); + const data = await fs.readFile(args.path, 'utf-8'); const result = await transformAsync(data, { filename: args.path, - inputSourceMap: (pluginOptions.sourcemap ? undefined : false) as undefined, + inputSourceMap: (useInputSourcemap ? undefined : false) as undefined, sourceMaps: pluginOptions.sourcemap ? 'inline' : false, compact: false, configFile: false, diff --git a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts index b83aff440552..3e49db280625 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts @@ -323,6 +323,7 @@ async function bundleCode( // JS/TS options { sourcemap: !!sourcemapOptions.scripts, + thirdPartySourcemaps: sourcemapOptions.vendor, tsconfig, advancedOptimizations: options.buildOptimizer, },