Skip to content

Commit c6ea256

Browse files
committed
fix(@angular-devkit/build-angular): fully downlevel async/await when using vite dev-server with caching enabled
Prior to this change, async/await in external packages were not being correctly downlevelled when using vite dev-server with cache enabled.t checkout Closes #25985 (cherry picked from commit 968ee34)
1 parent b53d5ef commit c6ea256

File tree

1 file changed

+17
-0
lines changed
  • packages/angular_devkit/build_angular/src/builders/dev-server

1 file changed

+17
-0
lines changed

packages/angular_devkit/build_angular/src/builders/dev-server/vite-server.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ import type { AddressInfo } from 'node:net';
1818
import path, { posix } from 'node:path';
1919
import { Connect, InlineConfig, ViteDevServer, createServer, normalizePath } from 'vite';
2020
import { JavaScriptTransformer } from '../../tools/esbuild/javascript-transformer';
21+
import { getFeatureSupport, transformSupportedBrowsersToTargets } from '../../tools/esbuild/utils';
2122
import { RenderOptions, renderPage } from '../../utils/server-rendering/render-page';
23+
import { getSupportedBrowsers } from '../../utils/supported-browsers';
2224
import { buildEsbuildBrowser } from '../browser-esbuild';
2325
import { Schema as BrowserBuilderOptions } from '../browser-esbuild/schema';
2426
import { loadProxyConfiguration } from './load-proxy-config';
@@ -88,6 +90,16 @@ export async function* serveWithVite(
8890
if (server) {
8991
handleUpdate(generatedFiles, server, serverOptions, context.logger);
9092
} else {
93+
const projectName = context.target?.project;
94+
if (!projectName) {
95+
throw new Error('The builder requires a target.');
96+
}
97+
98+
const { root = '' } = await context.getProjectMetadata(projectName);
99+
const projectRoot = path.join(context.workspaceRoot, root as string);
100+
const browsers = getSupportedBrowsers(projectRoot, context.logger);
101+
const target = transformSupportedBrowsersToTargets(browsers);
102+
91103
// Setup server and start listening
92104
const serverConfiguration = await setupServer(
93105
serverOptions,
@@ -96,6 +108,7 @@ export async function* serveWithVite(
96108
browserOptions.preserveSymlinks,
97109
browserOptions.externalDependencies,
98110
!!browserOptions.ssr,
111+
target,
99112
);
100113

101114
server = await createServer(serverConfiguration);
@@ -237,6 +250,7 @@ export async function setupServer(
237250
preserveSymlinks: boolean | undefined,
238251
prebundleExclude: string[] | undefined,
239252
ssr: boolean,
253+
target: string[],
240254
): Promise<InlineConfig> {
241255
const proxy = await loadProxyConfiguration(
242256
serverOptions.workspaceRoot,
@@ -494,6 +508,9 @@ export async function setupServer(
494508
entries: [],
495509
// Add an esbuild plugin to run the Angular linker on dependencies
496510
esbuildOptions: {
511+
// Set esbuild supported targets.
512+
target,
513+
supported: getFeatureSupport(target),
497514
plugins: [
498515
{
499516
name: 'angular-vite-optimize-deps',

0 commit comments

Comments
 (0)