Skip to content

Commit 968ee34

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. Closes #25985
1 parent d4dfeaf commit 968ee34

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,8 +18,10 @@ import path, { posix } from 'node:path';
1818
import type { Connect, InlineConfig, ViteDevServer } from 'vite';
1919
import { BuildOutputFile, BuildOutputFileType } from '../../tools/esbuild/bundler-context';
2020
import { JavaScriptTransformer } from '../../tools/esbuild/javascript-transformer';
21+
import { getFeatureSupport, transformSupportedBrowsersToTargets } from '../../tools/esbuild/utils';
2122
import { createAngularLocaleDataPlugin } from '../../tools/vite/i18n-locale-plugin';
2223
import { RenderOptions, renderPage } from '../../utils/server-rendering/render-page';
24+
import { getSupportedBrowsers } from '../../utils/supported-browsers';
2325
import { getIndexOutputFile } from '../../utils/webpack-browser-config';
2426
import { buildEsbuildBrowser } from '../browser-esbuild';
2527
import { Schema as BrowserBuilderOptions } from '../browser-esbuild/schema';
@@ -131,6 +133,16 @@ export async function* serveWithVite(
131133
if (server) {
132134
handleUpdate(generatedFiles, server, serverOptions, context.logger);
133135
} else {
136+
const projectName = context.target?.project;
137+
if (!projectName) {
138+
throw new Error('The builder requires a target.');
139+
}
140+
141+
const { root = '' } = await context.getProjectMetadata(projectName);
142+
const projectRoot = path.join(context.workspaceRoot, root as string);
143+
const browsers = getSupportedBrowsers(projectRoot, context.logger);
144+
const target = transformSupportedBrowsersToTargets(browsers);
145+
134146
// Setup server and start listening
135147
const serverConfiguration = await setupServer(
136148
serverOptions,
@@ -140,6 +152,7 @@ export async function* serveWithVite(
140152
browserOptions.externalDependencies,
141153
!!browserOptions.ssr,
142154
prebundleTransformer,
155+
target,
143156
);
144157

145158
server = await createServer(serverConfiguration);
@@ -295,6 +308,7 @@ export async function setupServer(
295308
prebundleExclude: string[] | undefined,
296309
ssr: boolean,
297310
prebundleTransformer: JavaScriptTransformer,
311+
target: string[],
298312
): Promise<InlineConfig> {
299313
const proxy = await loadProxyConfiguration(
300314
serverOptions.workspaceRoot,
@@ -556,6 +570,9 @@ export async function setupServer(
556570
entries: [],
557571
// Add an esbuild plugin to run the Angular linker on dependencies
558572
esbuildOptions: {
573+
// Set esbuild supported targets.
574+
target,
575+
supported: getFeatureSupport(target),
559576
plugins: [
560577
{
561578
name: 'angular-vite-optimize-deps',

0 commit comments

Comments
 (0)