diff --git a/.changeset/shy-knives-matter.md b/.changeset/shy-knives-matter.md new file mode 100644 index 000000000000..e002ab6af510 --- /dev/null +++ b/.changeset/shy-knives-matter.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-cloudflare': patch +--- + +fix: write server files to the cloudflare build directory diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index ceac64d92a2a..c1554216895b 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -10,19 +10,18 @@ export default function (options = {}) { async adapt(builder) { if (existsSync('_routes.json')) { throw new Error( - 'Cloudflare routes should be configured in svelte.config.js rather than _routes.json' + "Cloudflare's _routes.json should be configured in svelte.config.js. See https://svelte.dev/docs/kit/adapter-cloudflare#Options-routes" ); } const files = fileURLToPath(new URL('./files', import.meta.url).href); const dest = builder.getBuildDirectory('cloudflare'); - const tmp = builder.getBuildDirectory('cloudflare-tmp'); + const worker_dest = `${dest}/_worker.js`; builder.rimraf(dest); - builder.rimraf(tmp); builder.mkdirp(dest); - builder.mkdirp(tmp); + builder.mkdirp(worker_dest); // generate plaintext 404.html first which can then be overridden by prerendering, if the user defined such a page const fallback = path.join(dest, '404.html'); @@ -35,12 +34,11 @@ export default function (options = {}) { const dest_dir = `${dest}${builder.config.kit.paths.base}`; const written_files = builder.writeClient(dest_dir); builder.writePrerendered(dest_dir); - - const relativePath = path.posix.relative(dest, builder.getServerDirectory()); + builder.writeServer(`${worker_dest}/server`); writeFileSync( - `${tmp}/manifest.js`, - `export const manifest = ${builder.generateManifest({ relativePath })};\n\n` + + `${worker_dest}/manifest.js`, + `export const manifest = ${builder.generateManifest({ relativePath: './server' })};\n\n` + `export const prerendered = new Set(${JSON.stringify(builder.prerendered.paths)});\n\n` + `export const base_path = ${JSON.stringify(builder.config.kit.paths.base)};\n` ); @@ -60,10 +58,10 @@ export default function (options = {}) { writeFileSync(`${dest}/.assetsignore`, generate_assetsignore(), { flag: 'a' }); - builder.copy(`${files}/worker.js`, `${dest}/_worker.js`, { + builder.copy(`${files}/worker.js`, `${worker_dest}/index.js`, { replace: { - SERVER: `${relativePath}/index.js`, - MANIFEST: `${path.posix.relative(dest, tmp)}/manifest.js` + SERVER: './server/index.js', + MANIFEST: './manifest.js' } }); },