diff --git a/packages/angular/build/src/builders/application/execute-post-bundle.ts b/packages/angular/build/src/builders/application/execute-post-bundle.ts index 5066d5aaca01..d704c49eefca 100644 --- a/packages/angular/build/src/builders/application/execute-post-bundle.ts +++ b/packages/angular/build/src/builders/application/execute-post-bundle.ts @@ -184,7 +184,6 @@ export async function executePostBundleSteps( } const serializableRouteTreeNodeForManifest: WritableSerializableRouteTreeNode = []; - for (const metadata of serializableRouteTreeNode) { serializableRouteTreeNodeForManifest.push(metadata); diff --git a/packages/angular/build/src/utils/server-rendering/prerender.ts b/packages/angular/build/src/utils/server-rendering/prerender.ts index 93b76bf17dcf..5ffbedd94c08 100644 --- a/packages/angular/build/src/utils/server-rendering/prerender.ts +++ b/packages/angular/build/src/utils/server-rendering/prerender.ts @@ -16,6 +16,7 @@ import { assertIsError } from '../error'; import { urlJoin } from '../url'; import { WorkerPool } from '../worker-pool'; import { IMPORT_EXEC_ARGV } from './esm-in-memory-loader/utils'; +import { SERVER_APP_MANIFEST_FILENAME } from './manifest'; import { RouteRenderMode, RoutersExtractorWorkerResult, @@ -156,6 +157,16 @@ export async function prerenderPages( }; } + // Add the extracted routes to the manifest file. + // We could re-generate it from the start, but that would require a number of options to be passed down. + const manifest = outputFilesForWorker[SERVER_APP_MANIFEST_FILENAME]; + if (manifest) { + outputFilesForWorker[SERVER_APP_MANIFEST_FILENAME] = manifest.replace( + 'routes: undefined,', + `routes: ${JSON.stringify(serializableRouteTreeNodeForPrerender, undefined, 2)},`, + ); + } + // Render routes const { errors: renderingErrors, output } = await renderPages( baseHref, diff --git a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts index 71f833d880ac..4fe4c249803d 100644 --- a/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts +++ b/tests/legacy-cli/e2e/tests/build/server-rendering/server-routes-output-mode-static.ts @@ -101,11 +101,11 @@ export default async function () { await replaceInFile('src/app/app.routes.server.ts', 'RenderMode.Server', 'RenderMode.Prerender'); await noSilentNg('build', '--output-mode=static'); - const expects: Record = { - 'index.html': 'home works!', - 'ssg/index.html': 'ssg works!', - 'ssg/one/index.html': 'ssg-with-params works!', - 'ssg/two/index.html': 'ssg-with-params works!', + const expects: Record = { + 'index.html': /ng-server-context="ssg".+home works!/, + 'ssg/index.html': /ng-server-context="ssg".+ssg works!/, + 'ssg/one/index.html': /ng-server-context="ssg".+ssg-with-params works!/, + 'ssg/two/index.html': /ng-server-context="ssg".+ssg-with-params works!/, // When static redirects as generated as meta tags. 'ssg-redirect/index.html': '', };