diff --git a/.changeset/vercel-trace-cwd-root-glob.md b/.changeset/vercel-trace-cwd-root-glob.md new file mode 100644 index 000000000000..133ebd0bff0d --- /dev/null +++ b/.changeset/vercel-trace-cwd-root-glob.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-vercel': patch +--- + +fix: trace `process.cwd()`-relative files from the project directory and never glob from the filesystem root diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index f8a4b1e3dbdf..271173552217 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -540,7 +540,12 @@ async function create_function_bundle(builder, entry, dir, config) { let base = entry; while (base !== (base = path.dirname(base))); - const traced = await nodeFileTrace([entry], { base }); + const traced = await nodeFileTrace([entry], { + base, + processCwd: process.cwd(), + // a wildcard directly under `base` would glob the entire filesystem + ignore: (file) => file.startsWith('**') + }); /** @type {Map} */ const resolution_failures = new Map(); diff --git a/packages/adapter-vercel/test/apps/basic/asset.txt b/packages/adapter-vercel/test/apps/basic/asset.txt new file mode 100644 index 000000000000..eef26100dc5a --- /dev/null +++ b/packages/adapter-vercel/test/apps/basic/asset.txt @@ -0,0 +1 @@ +adapter trace fixture diff --git a/packages/adapter-vercel/test/apps/basic/build.test.js b/packages/adapter-vercel/test/apps/basic/build.test.js index c9fd8cdc1f94..63f7c3c3f383 100644 --- a/packages/adapter-vercel/test/apps/basic/build.test.js +++ b/packages/adapter-vercel/test/apps/basic/build.test.js @@ -61,3 +61,8 @@ test('dynamic ISR routes are matched after the filesystem', () => { const index = config.routes.findIndex((route) => route.src === '^(/isr/([^/]+?)/?)$'); assert.ok(index > filesystem); }); + +test('process.cwd() is traced from the project directory', () => { + const function_dir = fs.realpathSync(`${output}/functions/process-cwd.func`); + assert.ok(fs.existsSync(`${function_dir}/adapter-vercel/test/apps/basic/asset.txt`)); +}); diff --git a/packages/adapter-vercel/test/apps/basic/src/routes/process-cwd/+server.js b/packages/adapter-vercel/test/apps/basic/src/routes/process-cwd/+server.js new file mode 100644 index 000000000000..acf017b8db28 --- /dev/null +++ b/packages/adapter-vercel/test/apps/basic/src/routes/process-cwd/+server.js @@ -0,0 +1,6 @@ +import fs from 'node:fs'; +import path from 'node:path'; + +export function GET() { + return new Response(fs.readFileSync(path.join(process.cwd(), 'asset.txt'), 'utf8')); +}