summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/quick-kangaroos-notice.md5
-rw-r--r--packages/integrations/vercel/src/index.ts17
2 files changed, 20 insertions, 2 deletions
diff --git a/.changeset/quick-kangaroos-notice.md b/.changeset/quick-kangaroos-notice.md
new file mode 100644
index 000000000..4b9fb1d1f
--- /dev/null
+++ b/.changeset/quick-kangaroos-notice.md
@@ -0,0 +1,5 @@
+---
+'@astrojs/vercel': patch
+---
+
+Support dynamic paths
diff --git a/packages/integrations/vercel/src/index.ts b/packages/integrations/vercel/src/index.ts
index 22dbc3eef..dea059b29 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(),
+ })),
});
},
},