From 94ec04dfd6485fbcc323879bbbf3ce7f3492f58e Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Sun, 5 Nov 2023 17:35:39 +0000 Subject: [PATCH] perf(@angular-devkit/build-angular): start SSR dependencies optimization before the first request Vite will only start dependency optimization of SSR modules when the first request comes in. In some cases, this causes a long waiting time. To mitigate this, we call `ssrLoadModule` to initiate this process before the first request. --- .../src/builders/dev-server/vite-server.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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 28ee65b2e860..6f69b5ce46a5 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 @@ -216,8 +216,20 @@ export async function* serveWithVite( ); server = await createServer(serverConfiguration); - await server.listen(); + + if (browserOptions.ssr) { + /** + * Vite will only start dependency optimization of SSR modules when the first request comes in. + * In some cases, this causes a long waiting time. To mitigate this, we call `ssrLoadModule` to + * initiate this process before the first request. + * + * NOTE: This will intentionally fail from the unknown module, but currently there is no other way + * to initiate the SSR dep optimizer. + */ + void server.ssrLoadModule('').catch(() => {}); + } + const urls = server.resolvedUrls; if (urls && (urls.local.length || urls.network.length)) { serverUrl = new URL(urls.local[0] ?? urls.network[0]);