From 0f0c26a292645a48a998a684f75ce143b3747a9f Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Wed, 23 Apr 2025 15:54:44 +0800 Subject: [PATCH 01/15] simplify workers and pages distinction --- packages/adapter-cloudflare/index.js | 36 +++++++++++++--------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index af99452ef8fd..ca57e8bc4b3b 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -271,30 +271,29 @@ _redirects function validate_config(config_file = undefined) { const wrangler_config = unstable_readConfig({ config: config_file }); - // we don't support workers sites + // we don't support Workers Sites if (wrangler_config.site) { throw new Error( `You must remove all \`site\` keys in ${wrangler_config.configPath}. Consult https://svelte.dev/docs/kit/adapter-cloudflare#Migrating-from-Workers-Sites-to-Workers-Static-Assets` ); } + // we don't need to validate the config if there is no user Wrangler config + // or if we're building for Cloudflare Pages because it has fixed conventions if (is_building_for_cloudflare_pages(wrangler_config)) { return wrangler_config; } - // probably deploying to Cloudflare Workers - if (wrangler_config.main || wrangler_config.assets) { - if (!wrangler_config.assets?.directory) { - throw new Error( - `You must specify the \`assets.directory\` key in ${wrangler_config.configPath}. Consult https://developers.cloudflare.com/workers/static-assets/binding/#directory` - ); - } + if (!wrangler_config.assets?.directory) { + throw new Error( + `You must specify the \`assets.directory\` key in ${wrangler_config.configPath}. Consult https://developers.cloudflare.com/workers/static-assets/binding/#directory` + ); + } - if (!wrangler_config.assets?.binding) { - throw new Error( - `You must specify the \`assets.binding\` key in ${wrangler_config.configPath}. Consult https://developers.cloudflare.com/workers/static-assets/binding/#binding` - ); - } + if (!wrangler_config.assets?.binding) { + throw new Error( + `You must specify the \`assets.binding\` key in ${wrangler_config.configPath}. Consult https://developers.cloudflare.com/workers/static-assets/binding/#binding` + ); } return wrangler_config; @@ -305,13 +304,10 @@ function validate_config(config_file = undefined) { * @returns {boolean} */ function is_building_for_cloudflare_pages(wrangler_config) { - return ( - !!process.env.CF_PAGES || - !wrangler_config.configPath || - !!wrangler_config.pages_build_output_dir || - !wrangler_config.main || - !wrangler_config.assets - ); + if (!!process.env.WORKERS_CI || wrangler_config.main || wrangler_config.assets) { + return false; + } + return true; } /** @param {string} str */ From 0004d364564cdedcc8f4030f21d37b8ceb79bdd1 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Wed, 23 Apr 2025 15:54:57 +0800 Subject: [PATCH 02/15] support workers ci in adapter auto --- packages/adapter-auto/adapters.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/adapter-auto/adapters.js b/packages/adapter-auto/adapters.js index 94fe1417ec73..f859ce3dd859 100644 --- a/packages/adapter-auto/adapters.js +++ b/packages/adapter-auto/adapters.js @@ -11,7 +11,7 @@ export const adapters = [ }, { name: 'Cloudflare Pages', - test: () => !!process.env.CF_PAGES, + test: () => !!process.env.WORKERS_CI || !!process.env.CF_PAGES, module: '@sveltejs/adapter-cloudflare', version: '7' }, From fa08a5594d51ca99101051c3fe9ebfa5ef191eda Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Wed, 23 Apr 2025 17:08:13 +0800 Subject: [PATCH 03/15] add todo --- .changeset/plenty-cougars-wave.md | 6 ++++++ packages/adapter-cloudflare/index.js | 26 +++++++++++++++++++------- 2 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 .changeset/plenty-cougars-wave.md diff --git a/.changeset/plenty-cougars-wave.md b/.changeset/plenty-cougars-wave.md new file mode 100644 index 000000000000..8bee172655e1 --- /dev/null +++ b/.changeset/plenty-cougars-wave.md @@ -0,0 +1,6 @@ +--- +'@sveltejs/adapter-cloudflare': minor +'@sveltejs/adapter-auto': minor +--- + +feat: support Cloudflare Workers Builds by detecting the `WORKERS_CI` environment variable diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index ca57e8bc4b3b..3e2c999b197c 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -27,8 +27,7 @@ export default function (options = {}) { ); } - const wrangler_config = validate_config(options.config); - const building_for_cloudflare_pages = is_building_for_cloudflare_pages(wrangler_config); + const { wrangler_config, building_for_cloudflare_pages } = validate_config(options.config); let dest = builder.getBuildDirectory('cloudflare'); let worker_dest = `${dest}/_worker.js`; @@ -266,7 +265,10 @@ _redirects /** * @param {string} config_file - * @returns {import('wrangler').Unstable_Config} + * @returns {{ + * wrangler_config: import('wrangler').Unstable_Config, + * building_for_cloudflare_pages: boolean + * }} */ function validate_config(config_file = undefined) { const wrangler_config = unstable_readConfig({ config: config_file }); @@ -278,10 +280,17 @@ function validate_config(config_file = undefined) { ); } - // we don't need to validate the config if there is no user Wrangler config - // or if we're building for Cloudflare Pages because it has fixed conventions + // we don't need to validate the config if we're building for Cloudflare Pages + // because the `main` and `assets` values cannot be changed if (is_building_for_cloudflare_pages(wrangler_config)) { - return wrangler_config; + return { + wrangler_config, + building_for_cloudflare_pages: true + }; + } + + if (!wrangler_config.configPath) { + // TODO: generate wrangler config so it works out of the box? } if (!wrangler_config.assets?.directory) { @@ -296,7 +305,10 @@ function validate_config(config_file = undefined) { ); } - return wrangler_config; + return { + wrangler_config, + building_for_cloudflare_pages: false + }; } /** From 1868b8ce8d2b3eb6bb257661a90e3512ba992293 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Wed, 23 Apr 2025 17:32:00 +0800 Subject: [PATCH 04/15] remove todo --- packages/adapter-cloudflare/index.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index 3e2c999b197c..392dec60b6ae 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -289,10 +289,6 @@ function validate_config(config_file = undefined) { }; } - if (!wrangler_config.configPath) { - // TODO: generate wrangler config so it works out of the box? - } - if (!wrangler_config.assets?.directory) { throw new Error( `You must specify the \`assets.directory\` key in ${wrangler_config.configPath}. Consult https://developers.cloudflare.com/workers/static-assets/binding/#directory` From 38b294045ded44d671bbb70bb3d606fd06730f5b Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Wed, 23 Apr 2025 17:35:38 +0800 Subject: [PATCH 05/15] improve error message --- packages/adapter-cloudflare/index.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index 392dec60b6ae..76620fa60c71 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -273,10 +273,12 @@ _redirects function validate_config(config_file = undefined) { const wrangler_config = unstable_readConfig({ config: config_file }); + const wrangler_file = wrangler_config.configPath || ' your wrangler.jsonc file'; + // we don't support Workers Sites if (wrangler_config.site) { throw new Error( - `You must remove all \`site\` keys in ${wrangler_config.configPath}. Consult https://svelte.dev/docs/kit/adapter-cloudflare#Migrating-from-Workers-Sites-to-Workers-Static-Assets` + `You must remove all \`site\` keys in ${wrangler_file}. Consult https://svelte.dev/docs/kit/adapter-cloudflare#Migrating-from-Workers-Sites-to-Workers-Static-Assets` ); } @@ -291,13 +293,13 @@ function validate_config(config_file = undefined) { if (!wrangler_config.assets?.directory) { throw new Error( - `You must specify the \`assets.directory\` key in ${wrangler_config.configPath}. Consult https://developers.cloudflare.com/workers/static-assets/binding/#directory` + `You must specify the \`assets.directory\` key in ${wrangler_file}. Consult https://developers.cloudflare.com/workers/static-assets/binding/#directory` ); } if (!wrangler_config.assets?.binding) { throw new Error( - `You must specify the \`assets.binding\` key in ${wrangler_config.configPath}. Consult https://developers.cloudflare.com/workers/static-assets/binding/#binding` + `You must specify the \`assets.binding\` key in ${wrangler_file}. Consult https://developers.cloudflare.com/workers/static-assets/binding/#binding` ); } From 7bd425a4b613eae79b2b8c19be0050a75596ae34 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Wed, 23 Apr 2025 17:45:04 +0800 Subject: [PATCH 06/15] spacing --- packages/adapter-auto/index.js | 2 +- packages/adapter-cloudflare/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/adapter-auto/index.js b/packages/adapter-auto/index.js index c83ba6246c59..928f1a7ce981 100644 --- a/packages/adapter-auto/index.js +++ b/packages/adapter-auto/index.js @@ -84,7 +84,7 @@ async function get_adapter() { console.log(`Successfully installed ${match.module}.`); console.warn( - `\nIf you plan on staying on this deployment platform, consider replacing @sveltejs/adapter-auto with ${match.module}. This will give you faster and more robust installs, and more control over deployment configuration.\n` + `\nIf you plan on staying on this deployment platform, consider replacing @sveltejs/adapter-auto with ${match.module}. This will give you faster, more robust installs, and more control over deployment configuration.\n` ); } catch (e) { throw new Error( diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index 76620fa60c71..d3eda955cfdb 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -273,7 +273,7 @@ _redirects function validate_config(config_file = undefined) { const wrangler_config = unstable_readConfig({ config: config_file }); - const wrangler_file = wrangler_config.configPath || ' your wrangler.jsonc file'; + const wrangler_file = wrangler_config.configPath || 'your wrangler.jsonc file'; // we don't support Workers Sites if (wrangler_config.site) { From 4a61e6057d9350776323e93cdda90594ec1cf814 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Thu, 24 Apr 2025 09:54:31 +0800 Subject: [PATCH 07/15] Update packages/adapter-auto/index.js Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- packages/adapter-auto/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/adapter-auto/index.js b/packages/adapter-auto/index.js index 928f1a7ce981..659eab39bf05 100644 --- a/packages/adapter-auto/index.js +++ b/packages/adapter-auto/index.js @@ -84,7 +84,7 @@ async function get_adapter() { console.log(`Successfully installed ${match.module}.`); console.warn( - `\nIf you plan on staying on this deployment platform, consider replacing @sveltejs/adapter-auto with ${match.module}. This will give you faster, more robust installs, and more control over deployment configuration.\n` + `\nIf you plan on staying on this deployment platform, consider replacing @sveltejs/adapter-auto with ${match.module}. This will give you faster installs and more control over deployment configuration.\n` ); } catch (e) { throw new Error( From a9ce1c96873c0955a0d9c74b22e479b2092f7881 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 24 Apr 2025 11:27:02 +0800 Subject: [PATCH 08/15] validate main key and fix relative import paths --- packages/adapter-cloudflare/index.js | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index d3eda955cfdb..8381a669fed5 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -94,9 +94,10 @@ export default function (options = {}) { replace: { // the paths returned by the Wrangler config might be Windows paths, // so we need to convert them to POSIX paths or else the backslashes - // will be interpreted as escape characters and create an incorrect import path - SERVER: `${posixify(path.relative(worker_dest_dir, builder.getServerDirectory()))}/index.js`, - MANIFEST: `${posixify(path.relative(worker_dest_dir, tmp))}/manifest.js`, + // will be interpreted as escape characters and create an incorrect import path. + // we also need to ensure the relative paths start with ./ since Wrangler errors if relative imports don't have it + SERVER: `./${posixify(path.relative(worker_dest_dir, builder.getServerDirectory()))}/index.js`, + MANIFEST: `./${posixify(path.relative(worker_dest_dir, tmp))}/manifest.js`, ASSETS: assets_binding } }); @@ -283,14 +284,21 @@ function validate_config(config_file = undefined) { } // we don't need to validate the config if we're building for Cloudflare Pages - // because the `main` and `assets` values cannot be changed - if (is_building_for_cloudflare_pages(wrangler_config)) { + // because the `main` and `assets` values cannot be changed there + const building_for_cloudflare_pages = is_building_for_cloudflare_pages(wrangler_config); + if (building_for_cloudflare_pages) { return { wrangler_config, - building_for_cloudflare_pages: true + building_for_cloudflare_pages }; } + if (!wrangler_config.main) { + throw new Error( + `You must specify the \`main\` key in ${wrangler_file}. Consult https://developers.cloudflare.com/workers/wrangler/configuration/#inheritable-keys` + ); + } + if (!wrangler_config.assets?.directory) { throw new Error( `You must specify the \`assets.directory\` key in ${wrangler_file}. Consult https://developers.cloudflare.com/workers/static-assets/binding/#directory` @@ -305,7 +313,7 @@ function validate_config(config_file = undefined) { return { wrangler_config, - building_for_cloudflare_pages: false + building_for_cloudflare_pages }; } From 24a6ea8feb9400300680b3cb0696c0592b11cffb Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 24 Apr 2025 11:38:06 +0800 Subject: [PATCH 09/15] better comment --- packages/adapter-cloudflare/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index 8381a669fed5..0641fa480df5 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -95,7 +95,8 @@ export default function (options = {}) { // the paths returned by the Wrangler config might be Windows paths, // so we need to convert them to POSIX paths or else the backslashes // will be interpreted as escape characters and create an incorrect import path. - // we also need to ensure the relative paths start with ./ since Wrangler errors if relative imports don't have it + // We also need to ensure the relative imports start with ./ since Wrangler + // errors if a relative import looks like a package import SERVER: `./${posixify(path.relative(worker_dest_dir, builder.getServerDirectory()))}/index.js`, MANIFEST: `./${posixify(path.relative(worker_dest_dir, tmp))}/manifest.js`, ASSETS: assets_binding From b60969b63d37dafe117bb3b24caca4d62a2f5c00 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 24 Apr 2025 11:48:07 +0800 Subject: [PATCH 10/15] allow spa static assets configuration --- packages/adapter-cloudflare/index.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index 0641fa480df5..5febf6ecee78 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -294,7 +294,10 @@ function validate_config(config_file = undefined) { }; } - if (!wrangler_config.main) { + if ( + !wrangler_config.main && + wrangler_config.assets?.not_found_handling !== 'single-page-application' + ) { throw new Error( `You must specify the \`main\` key in ${wrangler_file}. Consult https://developers.cloudflare.com/workers/wrangler/configuration/#inheritable-keys` ); @@ -306,7 +309,7 @@ function validate_config(config_file = undefined) { ); } - if (!wrangler_config.assets?.binding) { + if (wrangler_config.main && !wrangler_config.assets?.binding) { throw new Error( `You must specify the \`assets.binding\` key in ${wrangler_file}. Consult https://developers.cloudflare.com/workers/static-assets/binding/#binding` ); From 8d4169d93c2446d5d233eb277aadd58e55896ba7 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 24 Apr 2025 12:00:06 +0800 Subject: [PATCH 11/15] add validation error reasons --- packages/adapter-cloudflare/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index 5febf6ecee78..4c4caa878195 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -299,19 +299,19 @@ function validate_config(config_file = undefined) { wrangler_config.assets?.not_found_handling !== 'single-page-application' ) { throw new Error( - `You must specify the \`main\` key in ${wrangler_file}. Consult https://developers.cloudflare.com/workers/wrangler/configuration/#inheritable-keys` + `You must specify the \`main\` key in ${wrangler_file} to deploy a Worker script. Consult https://developers.cloudflare.com/workers/wrangler/configuration/#inheritable-keys` ); } if (!wrangler_config.assets?.directory) { throw new Error( - `You must specify the \`assets.directory\` key in ${wrangler_file}. Consult https://developers.cloudflare.com/workers/static-assets/binding/#directory` + `You must specify the \`assets.directory\` key in ${wrangler_file} to upload static assets. Consult https://developers.cloudflare.com/workers/static-assets/binding/#directory` ); } if (wrangler_config.main && !wrangler_config.assets?.binding) { throw new Error( - `You must specify the \`assets.binding\` key in ${wrangler_file}. Consult https://developers.cloudflare.com/workers/static-assets/binding/#binding` + `You must specify the \`assets.binding\` key in ${wrangler_file} when deploying a Worker script. Consult https://developers.cloudflare.com/workers/static-assets/binding/#binding` ); } From 1417d6e61d78d92722f516ac2965a6b441da3e77 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 24 Apr 2025 12:12:36 +0800 Subject: [PATCH 12/15] docs formatting --- .../docs/25-build-and-deploy/60-adapter-cloudflare.md | 6 ++---- packages/adapter-cloudflare/index.d.ts | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md index b078b25ee4fa..7e764334aa0a 100644 --- a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md +++ b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md @@ -54,13 +54,11 @@ Preferences for the emulated `platform.env` local bindings. See the [getPlatform Whether to render a plaintext 404.html page or a rendered SPA fallback page for non-matching asset requests. -For Cloudflare Workers, the default behaviour is to return a null-body 404-status response for non-matching assets requests. However, if the [`assets.not_found_handling`](https://developers.cloudflare.com/workers/static-assets/routing/#2-not_found_handling) Wrangler configuration setting is set to `"404-page"`, this page will be served if a request fails to match an asset. If `assets.not_found_handling` is set to `"single-page-application"`, the adapter will render a SPA fallback index.html page regardless of the `fallback` option specified. +For Cloudflare Workers, the default behaviour is to return a null-body 404-status response for non-matching assets requests. However, if the [`assets.not_found_handling`](https://developers.cloudflare.com/workers/static-assets/routing/#2-not_found_handling) Wrangler configuration setting is set to `"404-page"`, this page will be served if a request fails to match an asset. If `assets.not_found_handling` is set to `"single-page-application"`, the adapter will render a SPA fallback `index.html` page regardless of the `fallback` option specified. For Cloudflare Pages, this page will only be served when a request that matches an entry in `routes.exclude` fails to match an asset. -Most of the time `plaintext` is sufficient, but if you are using `routes.exclude` to manually -exclude a set of prerendered pages without exceeding the 100 route limit, you may wish to -use `spa` instead to avoid showing an unstyled 404 page to users. +Most of the time `plaintext` is sufficient, but if you are using `routes.exclude` to manually exclude a set of prerendered pages without exceeding the 100 route limit, you may wish to use `spa` instead to avoid showing an unstyled 404 page to users. See Cloudflare Pages' [Not Found behaviour](https://developers.cloudflare.com/pages/configuration/serving-pages/#not-found-behavior) for more info. diff --git a/packages/adapter-cloudflare/index.d.ts b/packages/adapter-cloudflare/index.d.ts index 0c02fb786cee..52ab26dafd11 100644 --- a/packages/adapter-cloudflare/index.d.ts +++ b/packages/adapter-cloudflare/index.d.ts @@ -19,7 +19,7 @@ export interface AdapterOptions { * Wrangler configuration setting is set to `"404-page"`, this page will be * served if a request fails to match an asset. If `assets.not_found_handling` * is set to `"single-page-application"`, the adapter will render a SPA fallback - * index.html page regardless of the `fallback` option specified. + * `index.html` page regardless of the `fallback` option specified. * * For Cloudflare Pages, this page will only be served when a request that * matches an entry in `routes.exclude` fails to match an asset. From f6b2fcb1d0c87170a6b838349ab3c6c7ab3bfa83 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 24 Apr 2025 12:14:28 +0800 Subject: [PATCH 13/15] make compatibility date generic --- documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md index 7e764334aa0a..8e8a61e02f3d 100644 --- a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md +++ b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md @@ -86,7 +86,7 @@ When building for Cloudflare Workers, this adapter expects to find a [Wrangler c { "name": "", "main": ".svelte-kit/cloudflare/_worker.js", - "compatibility_date": "2025-01-01", + "compatibility_date": "", "assets": { "binding": "ASSETS", "directory": ".svelte-kit/cloudflare", From 515b1e6e6939942cb15f6a44a5ac389fbe00bed7 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 24 Apr 2025 12:22:05 +0800 Subject: [PATCH 14/15] mention workers ci --- documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md index 8e8a61e02f3d..9210526f1e4e 100644 --- a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md +++ b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md @@ -96,7 +96,7 @@ When building for Cloudflare Workers, this adapter expects to find a [Wrangler c ### Deployment -Please follow the [framework guide](https://developers.cloudflare.com/workers/frameworks/framework-guides/svelte/) for Cloudflare Workers to begin. +You use the Wrangler CLI to deploy your application by running `npx wrangler deploy` or use the [Cloudflare Git integration](https://developers.cloudflare.com/workers/ci-cd/builds/) to enable automatic builds and deployments on push. ## Cloudflare Pages From 710510b8cedc5d84bf879b83a4d29534be108305 Mon Sep 17 00:00:00 2001 From: Chew Tee Ming Date: Thu, 24 Apr 2025 12:22:19 +0800 Subject: [PATCH 15/15] grammar --- documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md index 9210526f1e4e..ada5f4f3932b 100644 --- a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md +++ b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md @@ -96,7 +96,7 @@ When building for Cloudflare Workers, this adapter expects to find a [Wrangler c ### Deployment -You use the Wrangler CLI to deploy your application by running `npx wrangler deploy` or use the [Cloudflare Git integration](https://developers.cloudflare.com/workers/ci-cd/builds/) to enable automatic builds and deployments on push. +You can use the Wrangler CLI to deploy your application by running `npx wrangler deploy` or use the [Cloudflare Git integration](https://developers.cloudflare.com/workers/ci-cd/builds/) to enable automatic builds and deployments on push. ## Cloudflare Pages