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.