diff options
author | 2022-10-10 12:37:03 -0300 | |
---|---|---|
committer | 2022-10-10 11:37:03 -0400 | |
commit | c1f991408b817217dbd4035dcc4ac0a2fecd08b8 (patch) | |
tree | 0d5520a0dd438edfb22feafc5f9cc1fb41106072 /packages/integrations/vercel/src/serverless/adapter.ts | |
parent | 2d9d42216722334db03adb14e59773db8389b7f9 (diff) | |
download | astro-c1f991408b817217dbd4035dcc4ac0a2fecd08b8.tar.gz astro-c1f991408b817217dbd4035dcc4ac0a2fecd08b8.tar.zst astro-c1f991408b817217dbd4035dcc4ac0a2fecd08b8.zip |
fix(vercel): now works with monorepos (#5033)
* Upgraded nft
* Handle monorepo better
* Changeset
* Fixed common ancestor
* Fixed outdir
Diffstat (limited to 'packages/integrations/vercel/src/serverless/adapter.ts')
-rw-r--r-- | packages/integrations/vercel/src/serverless/adapter.ts | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/packages/integrations/vercel/src/serverless/adapter.ts b/packages/integrations/vercel/src/serverless/adapter.ts index 970141cd0..f5ae4e8cb 100644 --- a/packages/integrations/vercel/src/serverless/adapter.ts +++ b/packages/integrations/vercel/src/serverless/adapter.ts @@ -1,6 +1,6 @@ import type { AstroAdapter, AstroConfig, AstroIntegration } from 'astro'; -import { getVercelOutput, writeJson } from '../lib/fs.js'; +import { getVercelOutput, removeDir, writeJson } from '../lib/fs.js'; import { copyDependenciesToFunction } from '../lib/nft.js'; import { getRedirects } from '../lib/redirects.js'; @@ -16,6 +16,7 @@ function getAdapter(): AstroAdapter { export default function vercelEdge(): AstroIntegration { let _config: AstroConfig; + let buildTempFolder: URL; let functionFolder: URL; let serverEntry: string; @@ -39,11 +40,18 @@ export default function vercelEdge(): AstroIntegration { 'astro:build:start': async ({ buildConfig }) => { buildConfig.serverEntry = serverEntry = 'entry.js'; buildConfig.client = new URL('./static/', _config.outDir); - buildConfig.server = functionFolder = new URL('./functions/render.func/', _config.outDir); + buildConfig.server = buildTempFolder = new URL('./dist/', _config.root); + functionFolder = new URL('./functions/render.func/', _config.outDir); }, 'astro:build:done': async ({ routes }) => { // Copy necessary files (e.g. node_modules/) - await copyDependenciesToFunction(_config.root, functionFolder, serverEntry); + const { handler } = await copyDependenciesToFunction( + new URL(serverEntry, buildTempFolder), + functionFolder + ); + + // Remove temporary folder + await removeDir(buildTempFolder); // Enable ESM // https://aws.amazon.com/blogs/compute/using-node-js-es-modules-and-top-level-await-in-aws-lambda/ @@ -55,7 +63,7 @@ export default function vercelEdge(): AstroIntegration { // https://vercel.com/docs/build-output-api/v3#vercel-primitives/serverless-functions/configuration await writeJson(new URL(`./.vc-config.json`, functionFolder), { runtime: getRuntime(), - handler: serverEntry, + handler, launcherType: 'Nodejs', }); |