diff --git a/.changeset/wild-seas-happen.md b/.changeset/wild-seas-happen.md new file mode 100644 index 000000000..8db21e433 --- /dev/null +++ b/.changeset/wild-seas-happen.md @@ -0,0 +1,5 @@ +--- +'@astrojs/vercel': patch +--- + +Added second build step through esbuild, to allow framework defined build (vite build) and target defined bundling (esbuilt step) diff --git a/packages/integrations/vercel/src/edge/adapter.ts b/packages/integrations/vercel/src/edge/adapter.ts index c4457ffdd..4193681d2 100644 --- a/packages/integrations/vercel/src/edge/adapter.ts +++ b/packages/integrations/vercel/src/edge/adapter.ts @@ -1,4 +1,5 @@ import type { AstroAdapter, AstroConfig, AstroIntegration } from 'astro'; +import esbuild from 'esbuild'; import { relative as relativePath } from 'node:path'; import { fileURLToPath } from 'node:url'; @@ -74,18 +75,25 @@ export default function vercelEdge({ includeFiles = [] }: VercelEdgeConfig = {}) } } - vite.ssr = { - target: 'webworker', - noExternal: true, - }; - - vite.build ||= {}; - vite.build.minify = true; + vite.ssr ||= {}; + vite.ssr.target ||= 'webworker'; } }, 'astro:build:done': async ({ routes }) => { const entry = new URL(serverEntry, buildTempFolder); const generatedFiles = await getFilesFromFolder(buildTempFolder); + const entryPath = fileURLToPath(entry); + + await esbuild.build({ + target: 'es2020', + platform: 'browser', + entryPoints: [entryPath], + outfile: entryPath, + allowOverwrite: true, + format: 'esm', + bundle: true, + minify: true, + }); // Copy entry and other server files const commonAncestor = await copyFilesToFunction( @@ -100,7 +108,7 @@ export default function vercelEdge({ includeFiles = [] }: VercelEdgeConfig = {}) // https://vercel.com/docs/build-output-api/v3#vercel-primitives/edge-functions/configuration await writeJson(new URL(`./.vc-config.json`, functionFolder), { runtime: 'edge', - entrypoint: relativePath(commonAncestor, fileURLToPath(entry)), + entrypoint: relativePath(commonAncestor, entryPath), }); // Output configuration