diff options
author | 2024-02-26 21:28:49 +0800 | |
---|---|---|
committer | 2024-02-26 18:58:49 +0530 | |
commit | ae2a10e1a768e31d243194694222932ffafb54cc (patch) | |
tree | 93227e002b604f6fe580559092aa3115d7a4c7ba | |
parent | bc2bf460eae13cbdad851afd4bda2602babca30b (diff) | |
download | astro-ae2a10e1a768e31d243194694222932ffafb54cc.tar.gz astro-ae2a10e1a768e31d243194694222932ffafb54cc.tar.zst astro-ae2a10e1a768e31d243194694222932ffafb54cc.zip |
Fix an issue where Vercel adapter may create functions for prerendered routes (#10231)
* fix: fix an issue where Vercel adapter may create functions for prerendered routes
* test: update test cases in `split.test.js`
* chore: add changeset
* refactor: apply suggested changes from code review
* Apply suggestions from code review
---------
Co-authored-by: Arsh <69170106+lilnasy@users.noreply.github.com>
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 + ); }); }); |