diff options
4 files changed, 26 insertions, 2 deletions
diff --git a/.changeset/four-shoes-rule.md b/.changeset/four-shoes-rule.md new file mode 100644 index 000000000..dbdfe466a --- /dev/null +++ b/.changeset/four-shoes-rule.md @@ -0,0 +1,5 @@ +--- +"@astrojs/vercel": patch +--- + +Fixes an issue where functions were also created for prerendered routes with `functionPerRoute` enabled. diff --git a/packages/integrations/vercel/src/serverless/adapter.ts b/packages/integrations/vercel/src/serverless/adapter.ts index db8f0c494..2f2e4f747 100644 --- a/packages/integrations/vercel/src/serverless/adapter.ts +++ b/packages/integrations/vercel/src/serverless/adapter.ts @@ -288,7 +288,9 @@ export default function vercelServerless({ } }, 'astro:build:ssr': async ({ entryPoints, middlewareEntryPoint }) => { - _entryPoints = entryPoints; + _entryPoints = new Map( + Array.from(entryPoints).filter(([routeData]) => !routeData.prerender) + ); _middlewareEntryPoint = middlewareEntryPoint; }, 'astro:build:done': async ({ routes, logger }) => { diff --git a/packages/integrations/vercel/test/fixtures/functionPerRoute/src/pages/prerender.astro b/packages/integrations/vercel/test/fixtures/functionPerRoute/src/pages/prerender.astro new file mode 100644 index 000000000..c61b83a97 --- /dev/null +++ b/packages/integrations/vercel/test/fixtures/functionPerRoute/src/pages/prerender.astro @@ -0,0 +1,12 @@ +--- +export const prerender = true; +--- + +<html> + <head> + <title>Prerendered Page</title> + </head> + <body> + <h1>Prerendered Page</h1> + </body> +</html> diff --git a/packages/integrations/vercel/test/split.test.js b/packages/integrations/vercel/test/split.test.js index fbd61aa9b..e64a4dc60 100644 --- a/packages/integrations/vercel/test/split.test.js +++ b/packages/integrations/vercel/test/split.test.js @@ -14,14 +14,19 @@ describe('build: split', () => { await fixture.build(); }); - it('creates separate functions for each page', async () => { + it('creates separate functions for non-prerendered pages', async () => { const files = await fixture.readdir('../.vercel/output/functions/'); assert.equal(files.length, 3); + assert.equal(files.includes('prerender.astro.func'), false); }); it('creates the route definitions in the config.json', async () => { const json = await fixture.readFile('../.vercel/output/config.json'); const config = JSON.parse(json); assert.equal(config.routes.length, 5); + assert.equal( + config.routes.some((route) => route.dest === 'prerender.astro'), + false + ); }); }); |