summaryrefslogtreecommitdiff
path: root/packages/integrations/vercel/src/serverless/adapter.ts
diff options
context:
space:
mode:
authorGravatar Juan Martín Seery <me@juanm04.com> 2022-10-10 12:37:03 -0300
committerGravatar GitHub <noreply@github.com> 2022-10-10 11:37:03 -0400
commitc1f991408b817217dbd4035dcc4ac0a2fecd08b8 (patch)
tree0d5520a0dd438edfb22feafc5f9cc1fb41106072 /packages/integrations/vercel/src/serverless/adapter.ts
parent2d9d42216722334db03adb14e59773db8389b7f9 (diff)
downloadastro-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.ts16
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',
});