fix(vercel): support dynamic paths (#3081)
* fix(vercel): support dynamic paths * Changeset
This commit is contained in:
parent
f968c05489
commit
f665d1a250
2 changed files with 20 additions and 2 deletions
5
.changeset/quick-kangaroos-notice.md
Normal file
5
.changeset/quick-kangaroos-notice.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
'@astrojs/vercel': patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Support dynamic paths
|
|
@ -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(),
|
||||||
|
})),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue