From c231f5696958c282f11b18c063bfe7d0d295da91 Mon Sep 17 00:00:00 2001 From: Brandon Roberts Date: Thu, 21 Sep 2023 08:42:42 -0500 Subject: [PATCH] fix(vite-plugin-nitro): enable prerendering of root index.html (#663) --- packages/vite-plugin-nitro/src/lib/build-server.ts | 11 +++++++++++ .../vite-plugin-nitro/src/lib/vite-plugin-nitro.ts | 1 - 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/vite-plugin-nitro/src/lib/build-server.ts b/packages/vite-plugin-nitro/src/lib/build-server.ts index 259c28fef..12e1522ee 100644 --- a/packages/vite-plugin-nitro/src/lib/build-server.ts +++ b/packages/vite-plugin-nitro/src/lib/build-server.ts @@ -1,4 +1,5 @@ import { NitroConfig } from 'nitropack'; +import * as fs from 'fs'; import { Options } from './options'; import { addPostRenderingHooks } from './hooks/post-rendering-hook'; @@ -24,6 +25,16 @@ export async function buildServer( await prepare(nitro); await copyPublicAssets(nitro); + if ( + nitroConfig?.prerender?.routes && + nitroConfig?.prerender?.routes.find((route) => route === '/') + ) { + // Remove the root index.html so it can be replaced with the prerendered version + if (fs.existsSync(`${nitroConfig?.output?.publicDir}/index.html`)) { + fs.unlinkSync(`${nitroConfig?.output?.publicDir}/index.html`); + } + } + console.log(`Prerendering static pages...`); await prerender(nitro); diff --git a/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts b/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts index d9963c691..a56b48bb5 100644 --- a/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts +++ b/packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts @@ -168,7 +168,6 @@ export function nitro(options?: Options, nitroOptions?: NitroConfig): Plugin[] { ...nitroConfig, }); const server = createDevServer(nitro); - await prepare(nitro); await build(nitro); viteServer.middlewares.use(apiPrefix, toNodeListener(server.app));