From f0fd14f7b7516a232554d5815d7661a2970aa3fb Mon Sep 17 00:00:00 2001 From: Gautier Ben Aim Date: Thu, 24 Jul 2025 00:44:00 +0200 Subject: [PATCH 1/4] fix(adapter-cloudflare): resolve paths from wrangler config --- packages/adapter-cloudflare/index.js | 16 ++++++++++++---- .../test/apps/workers/config/wrangler.jsonc | 7 +++++++ .../test/apps/workers/svelte.config.js | 4 +++- .../test/apps/workers/wrangler.jsonc | 7 ------- 4 files changed, 22 insertions(+), 12 deletions(-) create mode 100644 packages/adapter-cloudflare/test/apps/workers/config/wrangler.jsonc delete mode 100644 packages/adapter-cloudflare/test/apps/workers/wrangler.jsonc diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index a5d7bdcdfd95..388fbcb21d07 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -1,9 +1,10 @@ import { VERSION } from '@sveltejs/kit'; import { copyFileSync, existsSync, writeFileSync } from 'node:fs'; import path from 'node:path'; +import process from 'node:process'; import { fileURLToPath } from 'node:url'; -import { is_building_for_cloudflare_pages, validate_worker_settings } from './utils.js'; import { getPlatformProxy, unstable_readConfig } from 'wrangler'; +import { is_building_for_cloudflare_pages, validate_worker_settings } from './utils.js'; const name = '@sveltejs/adapter-cloudflare'; const [kit_major, kit_minor] = VERSION.split('.'); @@ -32,6 +33,13 @@ export default function (options = {}) { } const wrangler_config = validate_wrangler_config(options.config); + + // Resolve all paths relative to the wrangler config file, if any + const parent_dir = wrangler_config.configPath + ? path.dirname(path.resolve(wrangler_config.configPath)) + : process.cwd(); + const resolve = (/** @type {string} */ p) => path.resolve(parent_dir, p); + const building_for_cloudflare_pages = is_building_for_cloudflare_pages(wrangler_config); let dest = builder.getBuildDirectory('cloudflare'); @@ -40,15 +48,15 @@ export default function (options = {}) { if (building_for_cloudflare_pages) { if (wrangler_config.pages_build_output_dir) { - dest = wrangler_config.pages_build_output_dir; + dest = resolve(wrangler_config.pages_build_output_dir); worker_dest = `${dest}/_worker.js`; } } else { if (wrangler_config.main) { - worker_dest = wrangler_config.main; + worker_dest = resolve(wrangler_config.main); } if (wrangler_config.assets?.directory) { - dest = wrangler_config.assets.directory; + dest = resolve(wrangler_config.assets.directory); } if (wrangler_config.assets?.binding) { assets_binding = wrangler_config.assets.binding; diff --git a/packages/adapter-cloudflare/test/apps/workers/config/wrangler.jsonc b/packages/adapter-cloudflare/test/apps/workers/config/wrangler.jsonc new file mode 100644 index 000000000000..a54182b24d2b --- /dev/null +++ b/packages/adapter-cloudflare/test/apps/workers/config/wrangler.jsonc @@ -0,0 +1,7 @@ +{ + "main": "../dist/index.js", + "assets": { + "directory": "../dist/public", + "binding": "ASSETS" + } +} diff --git a/packages/adapter-cloudflare/test/apps/workers/svelte.config.js b/packages/adapter-cloudflare/test/apps/workers/svelte.config.js index 20cd2b3ff5b8..26cd6a965908 100644 --- a/packages/adapter-cloudflare/test/apps/workers/svelte.config.js +++ b/packages/adapter-cloudflare/test/apps/workers/svelte.config.js @@ -3,7 +3,9 @@ import adapter from '../../../index.js'; /** @type {import('@sveltejs/kit').Config} */ const config = { kit: { - adapter: adapter() + adapter: adapter({ + config: 'config/wrangler.jsonc' + }) } }; diff --git a/packages/adapter-cloudflare/test/apps/workers/wrangler.jsonc b/packages/adapter-cloudflare/test/apps/workers/wrangler.jsonc deleted file mode 100644 index 1f2cb073f7b6..000000000000 --- a/packages/adapter-cloudflare/test/apps/workers/wrangler.jsonc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "main": "./dist/index.js", - "assets": { - "directory": "./dist/public", - "binding": "ASSETS" - } -} From d923a6faa10bcac1e11c5ded5a63cca2bb61eb92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gautier=20Ben=20A=C3=AFm?= <48261497+GauBen@users.noreply.github.com> Date: Thu, 24 Jul 2025 00:46:55 +0200 Subject: [PATCH 2/4] Create new-donkeys-approve.md --- .changeset/new-donkeys-approve.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/new-donkeys-approve.md diff --git a/.changeset/new-donkeys-approve.md b/.changeset/new-donkeys-approve.md new file mode 100644 index 000000000000..64baa5294327 --- /dev/null +++ b/.changeset/new-donkeys-approve.md @@ -0,0 +1,6 @@ +--- +"@sveltejs/adapter-cloudflare": patch +"test-cloudflare-workers": patch +--- + +fix(adapter-cloudflare): resolve paths from wrangler config From d4a17d6572394a77a043e6d705ee05d972a9baea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gautier=20Ben=20A=C3=AFm?= <48261497+GauBen@users.noreply.github.com> Date: Wed, 30 Jul 2025 16:03:56 +0200 Subject: [PATCH 3/4] my bad Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/new-donkeys-approve.md | 1 - 1 file changed, 1 deletion(-) diff --git a/.changeset/new-donkeys-approve.md b/.changeset/new-donkeys-approve.md index 64baa5294327..0587896a3b5b 100644 --- a/.changeset/new-donkeys-approve.md +++ b/.changeset/new-donkeys-approve.md @@ -1,6 +1,5 @@ --- "@sveltejs/adapter-cloudflare": patch -"test-cloudflare-workers": patch --- fix(adapter-cloudflare): resolve paths from wrangler config From 5a02a40a2d7ac9253731412462324646a75638d8 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 31 Jul 2025 12:01:15 +0800 Subject: [PATCH 4/4] cleanup --- .changeset/new-donkeys-approve.md | 2 +- packages/adapter-cloudflare/index.js | 17 ++++++++--------- .../test/apps/workers/config/wrangler.jsonc | 3 +++ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/.changeset/new-donkeys-approve.md b/.changeset/new-donkeys-approve.md index 0587896a3b5b..2ae59dabf9d1 100644 --- a/.changeset/new-donkeys-approve.md +++ b/.changeset/new-donkeys-approve.md @@ -2,4 +2,4 @@ "@sveltejs/adapter-cloudflare": patch --- -fix(adapter-cloudflare): resolve paths from wrangler config +fix: resolve the absolute path of the Wrangler config setting `assets.directory` in case the config file is in a different directory than the root project diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index 388fbcb21d07..fdbdf9a769ed 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -34,12 +34,6 @@ export default function (options = {}) { const wrangler_config = validate_wrangler_config(options.config); - // Resolve all paths relative to the wrangler config file, if any - const parent_dir = wrangler_config.configPath - ? path.dirname(path.resolve(wrangler_config.configPath)) - : process.cwd(); - const resolve = (/** @type {string} */ p) => path.resolve(parent_dir, p); - const building_for_cloudflare_pages = is_building_for_cloudflare_pages(wrangler_config); let dest = builder.getBuildDirectory('cloudflare'); @@ -48,15 +42,20 @@ export default function (options = {}) { if (building_for_cloudflare_pages) { if (wrangler_config.pages_build_output_dir) { - dest = resolve(wrangler_config.pages_build_output_dir); + dest = wrangler_config.pages_build_output_dir; worker_dest = `${dest}/_worker.js`; } } else { if (wrangler_config.main) { - worker_dest = resolve(wrangler_config.main); + worker_dest = wrangler_config.main; } if (wrangler_config.assets?.directory) { - dest = resolve(wrangler_config.assets.directory); + // wrangler doesn't resolve `assets.directory` to an absolute path unlike + // `main` and `pages_build_output_dir` so we need to do it ourselves here + const parent_dir = wrangler_config.configPath + ? path.dirname(path.resolve(wrangler_config.configPath)) + : process.cwd(); + dest = path.resolve(parent_dir, wrangler_config.assets.directory); } if (wrangler_config.assets?.binding) { assets_binding = wrangler_config.assets.binding; diff --git a/packages/adapter-cloudflare/test/apps/workers/config/wrangler.jsonc b/packages/adapter-cloudflare/test/apps/workers/config/wrangler.jsonc index a54182b24d2b..0bf8a9db8c3a 100644 --- a/packages/adapter-cloudflare/test/apps/workers/config/wrangler.jsonc +++ b/packages/adapter-cloudflare/test/apps/workers/config/wrangler.jsonc @@ -1,4 +1,7 @@ +// we've moved the wrangler config away from the root of the project +// to test that the adapter still resolves the paths correctly { + "$schema": "../node_modules/wrangler/config-schema.json", "main": "../dist/index.js", "assets": { "directory": "../dist/public",