From 62d51383acfd8cdeedf07b34c2d78f505ff2e3a8 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 20 Nov 2023 10:23:03 +0000 Subject: [PATCH] fix(@angular-devkit/build-angular): only include vendor sourcemaps when using the dev-server when the option is enabled Prior to this change the vendor sourcemaps option was not being considered when in the vite JavaScript transformation pipeline. (cherry picked from commit 451903e01f368a3721ad85135ccb7f498653047c) --- .../src/builders/dev-server/vite-server.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/builders/dev-server/vite-server.ts b/packages/angular_devkit/build_angular/src/builders/dev-server/vite-server.ts index eebe6ed5d299..4b5075e28422 100644 --- a/packages/angular_devkit/build_angular/src/builders/dev-server/vite-server.ts +++ b/packages/angular_devkit/build_angular/src/builders/dev-server/vite-server.ts @@ -22,6 +22,7 @@ import { JavaScriptTransformer } from '../../tools/esbuild/javascript-transforme import { createRxjsEsmResolutionPlugin } from '../../tools/esbuild/rxjs-esm-resolution-plugin'; import { getFeatureSupport, transformSupportedBrowsersToTargets } from '../../tools/esbuild/utils'; import { createAngularLocaleDataPlugin } from '../../tools/vite/i18n-locale-plugin'; +import { normalizeSourceMaps } from '../../utils'; import { renderPage } from '../../utils/server-rendering/render-page'; import { getSupportedBrowsers } from '../../utils/supported-browsers'; import { getIndexOutputFile } from '../../utils/webpack-browser-config'; @@ -103,12 +104,14 @@ export async function* serveWithVite( browserOptions.forceI18nFlatOutput = true; } + const { vendor: thirdPartySourcemaps } = normalizeSourceMaps(browserOptions.sourceMap ?? false); + // Setup the prebundling transformer that will be shared across Vite prebundling requests const prebundleTransformer = new JavaScriptTransformer( // Always enable JIT linking to support applications built with and without AOT. // In a development environment the additional scope information does not // have a negative effect unlike production where final output size is relevant. - { sourcemap: true, jit: true, thirdPartySourcemaps: true }, + { sourcemap: true, jit: true, thirdPartySourcemaps }, 1, true, ); @@ -235,6 +238,7 @@ export async function* serveWithVite( target, extensions?.middleware, transformers?.indexHtml, + thirdPartySourcemaps, ); server = await createServer(serverConfiguration); @@ -402,6 +406,7 @@ export async function setupServer( target: string[], extensionMiddleware?: Connect.NextHandleFunction[], indexHtmlTransformer?: (content: string) => Promise, + thirdPartySourcemaps = false, ): Promise { const proxy = await loadProxyConfiguration( serverOptions.workspaceRoot, @@ -480,6 +485,7 @@ export async function setupServer( ssr: true, prebundleTransformer, target, + thirdPartySourcemaps, }), }, plugins: [ @@ -735,6 +741,7 @@ export async function setupServer( ssr: false, prebundleTransformer, target, + thirdPartySourcemaps, }), }; @@ -802,6 +809,7 @@ function getDepOptimizationConfig({ target, prebundleTransformer, ssr, + thirdPartySourcemaps, }: { disabled: boolean; exclude: string[]; @@ -809,10 +817,13 @@ function getDepOptimizationConfig({ target: string[]; prebundleTransformer: JavaScriptTransformer; ssr: boolean; + thirdPartySourcemaps: boolean; }): DepOptimizationConfig { const plugins: ViteEsBuildPlugin[] = [ { - name: `angular-vite-optimize-deps${ssr ? '-ssr' : ''}`, + name: `angular-vite-optimize-deps${ssr ? '-ssr' : ''}${ + thirdPartySourcemaps ? '-vendor-sourcemap' : '' + }`, setup(build) { build.onLoad({ filter: /\.[cm]?js$/ }, async (args) => { return {