From 6b8d01e623e3272c0040c219e45448f41739aa6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Mart=C3=ADn=20Seery?= Date: Tue, 12 Apr 2022 11:02:59 -0300 Subject: [PATCH] fix(vercel): support dynamic paths (#3081) * fix(vercel): support dynamic paths * Changeset --- packages/integrations/vercel/src/index.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/integrations/vercel/src/index.ts b/packages/integrations/vercel/src/index.ts index 22dbc3eef0..dea059b291 100644 --- a/packages/integrations/vercel/src/index.ts +++ b/packages/integrations/vercel/src/index.ts @@ -1,4 +1,4 @@ -import type { AstroAdapter, AstroConfig, AstroIntegration } from 'astro'; +import type { AstroAdapter, AstroConfig, AstroIntegration, RouteData } from 'astro'; import type { PathLike } from 'fs'; import fs from 'fs/promises'; import esbuild from 'esbuild'; @@ -67,16 +67,29 @@ export default function vercel(): AstroIntegration { await fs.rm(tmpDir, { recursive: true }); + let staticRoutes: RouteData[] = []; + let dynamicRoutes: RouteData[] = []; + + for (const route of routes) { + if (route.params.length === 0) staticRoutes.push(route); + else dynamicRoutes.push(route); + } + // Routes Manifest // https://vercel.com/docs/file-system-api#configuration/routes await writeJson(new URL(`./routes-manifest.json`, _config.outDir), { version: 3, basePath: '/', pages404: false, - rewrites: routes.map((route) => ({ + rewrites: staticRoutes.map((route) => ({ source: route.pathname, + regex: route.pattern.toString(), destination: `/${ENTRYFILE}`, })), + dynamicRoutes: dynamicRoutes.map((route) => ({ + page: `/${ENTRYFILE}`, + regex: route.pattern.toString(), + })), }); }, },