fix(vercel): support dynamic paths (#3081)

* fix(vercel): support dynamic paths

* Changeset
This commit is contained in:
Juan Martín Seery 2022-04-12 11:02:59 -03:00 committed by GitHub
parent f968c05489
commit f665d1a250
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 2 deletions

View file

@ -0,0 +1,5 @@
---
'@astrojs/vercel': patch
---
Support dynamic paths

View file

@ -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 type { PathLike } from 'fs';
import fs from 'fs/promises'; import fs from 'fs/promises';
import esbuild from 'esbuild'; import esbuild from 'esbuild';
@ -67,16 +67,29 @@ export default function vercel(): AstroIntegration {
await fs.rm(tmpDir, { recursive: true }); 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 // Routes Manifest
// https://vercel.com/docs/file-system-api#configuration/routes // https://vercel.com/docs/file-system-api#configuration/routes
await writeJson(new URL(`./routes-manifest.json`, _config.outDir), { await writeJson(new URL(`./routes-manifest.json`, _config.outDir), {
version: 3, version: 3,
basePath: '/', basePath: '/',
pages404: false, pages404: false,
rewrites: routes.map((route) => ({ rewrites: staticRoutes.map((route) => ({
source: route.pathname, source: route.pathname,
regex: route.pattern.toString(),
destination: `/${ENTRYFILE}`, destination: `/${ENTRYFILE}`,
})), })),
dynamicRoutes: dynamicRoutes.map((route) => ({
page: `/${ENTRYFILE}`,
regex: route.pattern.toString(),
})),
}); });
}, },
}, },