diff --git a/src/presets/cloudflare/preset.ts b/src/presets/cloudflare/preset.ts index c89b574430..141dac1517 100644 --- a/src/presets/cloudflare/preset.ts +++ b/src/presets/cloudflare/preset.ts @@ -166,10 +166,17 @@ const cloudflareModule = defineNitroPreset( await enableNodeCompat(nitro); if (!nitro.options.cloudflare?.deployConfig) { - nitro.options.commands.preview = - "npx wrangler dev {{ output.serverDir }}/index.mjs --assets {{ output.publicDir }}"; - nitro.options.commands.deploy = - "npx wrangler deploy {{ output.serverDir }}/index.mjs --assets {{ output.publicDir }}"; + if (nitro.options.static) { + nitro.options.commands.preview = + "npx wrangler dev --assets {{ output.publicDir }}"; + nitro.options.commands.deploy = + "npx wrangler deploy --assets {{ output.publicDir }}"; + } else { + nitro.options.commands.preview = + "npx wrangler dev {{ output.serverDir }}/index.mjs --assets {{ output.publicDir }}"; + nitro.options.commands.deploy = + "npx wrangler deploy {{ output.serverDir }}/index.mjs --assets {{ output.publicDir }}"; + } } }, async compiled(nitro: Nitro) { diff --git a/src/presets/cloudflare/utils.ts b/src/presets/cloudflare/utils.ts index b78c89d582..f3c1c2c1c0 100644 --- a/src/presets/cloudflare/utils.ts +++ b/src/presets/cloudflare/utils.ts @@ -292,20 +292,27 @@ export async function writeWranglerConfig( ); } else { // Modules - overrides.main = relative( + const assetsDirectory = relative( wranglerConfigDir, - join(nitro.options.output.serverDir, "index.mjs") + resolve( + nitro.options.output.publicDir, + "..".repeat(nitro.options.baseURL.split("/").filter(Boolean).length) + ) ); - overrides.assets = { - binding: "ASSETS", - directory: relative( + if (nitro.options.static) { + // Static build: no worker entry, deploy as pure static assets + // https://developers.cloudflare.com/workers/static-assets/ + overrides.assets = { directory: assetsDirectory }; + } else { + overrides.main = relative( wranglerConfigDir, - resolve( - nitro.options.output.publicDir, - "..".repeat(nitro.options.baseURL.split("/").filter(Boolean).length) - ) - ), - }; + join(nitro.options.output.serverDir, "index.mjs") + ); + overrides.assets = { + binding: "ASSETS", + directory: assetsDirectory, + }; + } } // Read user config