From 060d8c772cc824a3761aff9bccc2954c42022316 Mon Sep 17 00:00:00 2001 From: Mexican-Man Date: Tue, 18 Oct 2022 17:12:51 -0600 Subject: [PATCH] Initial hacky proof of concept --- packages/adapter-cloudflare/index.js | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index fd5a60c3e2309..6aa840c80e164 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -25,7 +25,16 @@ export default function () { const dest_dir = `${dest}${builder.config.kit.paths.base}`; const written_files = builder.writeClient(dest_dir); - builder.writePrerendered(dest_dir); + + const prerendered_files = builder.writePrerendered(`${dest_dir}`) + .map((file) => file === 'index.html' ? file : `${file.replace(/\.[^/.]+$/, "")}`); + + writeFileSync(`${dest_dir}/_redirects`, prerendered_files + .filter((file) => file !== 'index.html') + .map((file) => { + return `/${file} /${file}/index.html 200`; + }) + .join('\n')); const relativePath = posix.relative(tmp, builder.getServerDirectory()); @@ -41,7 +50,7 @@ export default function () { writeFileSync( `${dest}/_routes.json`, - JSON.stringify(get_routes_json(builder.config.kit.appDir, written_files)) + JSON.stringify(get_routes_json(builder.config.kit.appDir, [...written_files, ...prerendered_files])) ); writeFileSync(`${dest}/_headers`, generate_headers(builder.config.kit.appDir)); @@ -77,8 +86,8 @@ function get_routes_json(app_dir, assets) { version: 1, description: 'Generated by @sveltejs/adapter-cloudflare', include: ['/*'], - exclude: [ - `/${app_dir}/immutable/*`, + exclude: [...new Set([ + `/${ app_dir }/immutable/*`, ...assets // We're being conservative by not excluding all assets in // /static just yet. If there are any upstream auth rules to @@ -88,9 +97,11 @@ function get_routes_json(app_dir, assets) { // We do want to show an example of a _routes.json that // excludes more than just /_app/immutable/*, and favicons // are a reasonable choice - .filter((file) => file.startsWith('favicon')) - .map((file) => `/${file}`) - ] + // .filter((file) => file.startsWith('favicon')) + .filter((file) => !file.startsWith('_app')) + .map((file) => `/${file.split('/')[ 0 ]}`) + .filter((file) => file !== '/_app/*') + ])] }; }