From 5e12f96dea1c18eaf2f03e845eaa03e146f34378 Mon Sep 17 00:00:00 2001 From: Ming-jun Lu <40516784+mingjunlu@users.noreply.github.com> Date: Mon, 26 Feb 2024 17:48:17 +0800 Subject: [PATCH 1/5] fix: fix an issue where Vercel adapter may create functions for prerendered routes --- packages/integrations/vercel/src/serverless/adapter.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/integrations/vercel/src/serverless/adapter.ts b/packages/integrations/vercel/src/serverless/adapter.ts index db8f0c494a2e..8920a075f1a7 100644 --- a/packages/integrations/vercel/src/serverless/adapter.ts +++ b/packages/integrations/vercel/src/serverless/adapter.ts @@ -288,7 +288,10 @@ export default function vercelServerless({ } }, 'astro:build:ssr': async ({ entryPoints, middlewareEntryPoint }) => { - _entryPoints = entryPoints; + const entryPointsWithoutPrerenderedRoutes = new Map( + Array.from(entryPoints).filter(([routeData]) => !routeData.prerender) + ); + _entryPoints = entryPointsWithoutPrerenderedRoutes; _middlewareEntryPoint = middlewareEntryPoint; }, 'astro:build:done': async ({ routes, logger }) => { From 5ac06354ef13e42fc28c0e0b94a8597482af209c Mon Sep 17 00:00:00 2001 From: Ming-jun Lu <40516784+mingjunlu@users.noreply.github.com> Date: Mon, 26 Feb 2024 17:52:39 +0800 Subject: [PATCH 2/5] test: update test cases in `split.test.js` --- .../functionPerRoute/src/pages/prerender.astro | 12 ++++++++++++ packages/integrations/vercel/test/split.test.js | 7 ++++++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 packages/integrations/vercel/test/fixtures/functionPerRoute/src/pages/prerender.astro 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 000000000000..c61b83a97ca2 --- /dev/null +++ b/packages/integrations/vercel/test/fixtures/functionPerRoute/src/pages/prerender.astro @@ -0,0 +1,12 @@ +--- +export const prerender = true; +--- + + + + Prerendered Page + + +

Prerendered Page

+ + diff --git a/packages/integrations/vercel/test/split.test.js b/packages/integrations/vercel/test/split.test.js index fbd61aa9bfd1..e64a4dc60646 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 + ); }); }); From 7c37d0d49c5f56065c3fe81c4aa2b6cdb3d06fa6 Mon Sep 17 00:00:00 2001 From: Ming-jun Lu <40516784+mingjunlu@users.noreply.github.com> Date: Mon, 26 Feb 2024 18:27:39 +0800 Subject: [PATCH 3/5] chore: add changeset --- .changeset/four-shoes-rule.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/four-shoes-rule.md diff --git a/.changeset/four-shoes-rule.md b/.changeset/four-shoes-rule.md new file mode 100644 index 000000000000..e36395b1cd8e --- /dev/null +++ b/.changeset/four-shoes-rule.md @@ -0,0 +1,5 @@ +--- +"@astrojs/vercel": patch +--- + +Fixes an issue where Vercel adapter may create functions for prerendered routes From f323e364d2678d7b8cfbbd93a2d8d8c24951553e Mon Sep 17 00:00:00 2001 From: Ming-jun Lu <40516784+mingjunlu@users.noreply.github.com> Date: Mon, 26 Feb 2024 18:42:22 +0800 Subject: [PATCH 4/5] refactor: apply suggested changes from code review --- packages/integrations/vercel/src/serverless/adapter.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/integrations/vercel/src/serverless/adapter.ts b/packages/integrations/vercel/src/serverless/adapter.ts index 8920a075f1a7..2f2e4f747ad6 100644 --- a/packages/integrations/vercel/src/serverless/adapter.ts +++ b/packages/integrations/vercel/src/serverless/adapter.ts @@ -288,10 +288,9 @@ export default function vercelServerless({ } }, 'astro:build:ssr': async ({ entryPoints, middlewareEntryPoint }) => { - const entryPointsWithoutPrerenderedRoutes = new Map( + _entryPoints = new Map( Array.from(entryPoints).filter(([routeData]) => !routeData.prerender) ); - _entryPoints = entryPointsWithoutPrerenderedRoutes; _middlewareEntryPoint = middlewareEntryPoint; }, 'astro:build:done': async ({ routes, logger }) => { From 8b71d4f08d35a3cfec8dbab397b462a12199e090 Mon Sep 17 00:00:00 2001 From: Arsh <69170106+lilnasy@users.noreply.github.com> Date: Mon, 26 Feb 2024 18:43:59 +0530 Subject: [PATCH 5/5] Apply suggestions from code review --- .changeset/four-shoes-rule.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/four-shoes-rule.md b/.changeset/four-shoes-rule.md index e36395b1cd8e..dbdfe466aa9e 100644 --- a/.changeset/four-shoes-rule.md +++ b/.changeset/four-shoes-rule.md @@ -2,4 +2,4 @@ "@astrojs/vercel": patch --- -Fixes an issue where Vercel adapter may create functions for prerendered routes +Fixes an issue where functions were also created for prerendered routes with `functionPerRoute` enabled.