From 4afa250f341224b614a758eeb8f0585e45fcc593 Mon Sep 17 00:00:00 2001 From: Ryan Christian Date: Sun, 10 May 2026 20:28:34 -0500 Subject: [PATCH 1/2] fix: Ensure prerender script isn't merged into entry --- src/plugins/prerender-plugin.js | 2 +- tests/config.test.js | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/plugins/prerender-plugin.js b/src/plugins/prerender-plugin.js index 36e1e98..5a8198d 100644 --- a/src/plugins/prerender-plugin.js +++ b/src/plugins/prerender-plugin.js @@ -185,7 +185,7 @@ export function prerenderPlugin({ prerenderScript, renderTarget, additionalPrere config.build.rollupOptions.output ??= {}; config.build.rollupOptions.output.manualChunks = (id) => { - if (id.includes(prerenderScript) || id.includes(preloadPolyfillId)) { + if (id.includes(preloadPolyfillId)) { return 'index'; } }; diff --git a/tests/config.test.js b/tests/config.test.js index 9829e89..b150e42 100644 --- a/tests/config.test.js +++ b/tests/config.test.js @@ -1,5 +1,7 @@ import { test } from 'uvu'; import * as assert from 'uvu/assert'; +import path from 'node:path'; +import { promises as fs } from 'node:fs'; import { setupTest, teardownTest, loadFixture, viteBuild } from './lib/lifecycle.js'; import { getOutputFile, outputFileExists, writeFixtureFile } from './lib/utils.js'; @@ -30,6 +32,12 @@ test('Should support the `prerenderScript` plugin option', async () => { const prerenderedHtml = await getOutputFile(env.tmp.path, 'index.html'); assert.match(prerenderedHtml, '

Hello, World!

'); + + const outDirAssets = await fs.readdir(path.join(env.tmp.path, 'dist', 'assets')); + + assert.equal(outDirAssets.length, 2); + assert.ok(outDirAssets.some(asset => /^index-/.test(asset))) + assert.ok(outDirAssets.some(asset => /^prerender-/.test(asset))) }); test('Should throw if no `prerenderScript` is specified or can be found', async () => { From 705ef156762ad9685045f79a3f79f19bbb3ed2b2 Mon Sep 17 00:00:00 2001 From: Ryan Christian Date: Sun, 10 May 2026 20:38:49 -0500 Subject: [PATCH 2/2] fix: Other merging --- src/plugins/prerender-plugin.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/plugins/prerender-plugin.js b/src/plugins/prerender-plugin.js index 5a8198d..051c740 100644 --- a/src/plugins/prerender-plugin.js +++ b/src/plugins/prerender-plugin.js @@ -72,6 +72,7 @@ function serializeElement(element) { * @returns {import('vite').Plugin} */ export function prerenderPlugin({ prerenderScript, renderTarget, additionalPrerenderRoutes } = {}) { + const originalPrerenderScript = prerenderScript; let viteConfig = {}; let userEnabledSourceMaps; let ssrBuild = false; @@ -185,7 +186,12 @@ export function prerenderPlugin({ prerenderScript, renderTarget, additionalPrere config.build.rollupOptions.output ??= {}; config.build.rollupOptions.output.manualChunks = (id) => { - if (id.includes(preloadPolyfillId)) { + // If the user has specified a prerender script via the plugin options, we don't + // want to merge it into the index, but if they're using `