From 22d7c154641818cfbfd8af9c8237712547c75410 Mon Sep 17 00:00:00 2001 From: Peter Pistorius Date: Sat, 8 Nov 2025 11:31:06 +0200 Subject: [PATCH 1/5] Add RedwoodSDK to c3. --- .../src/frameworks/package.json | 1 + packages/create-cloudflare/src/templates.ts | 2 ++ .../create-cloudflare/templates/redwood/c3.ts | 34 +++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 packages/create-cloudflare/templates/redwood/c3.ts diff --git a/packages/create-cloudflare/src/frameworks/package.json b/packages/create-cloudflare/src/frameworks/package.json index ca4683ad57d0..0b42b259dce3 100644 --- a/packages/create-cloudflare/src/frameworks/package.json +++ b/packages/create-cloudflare/src/frameworks/package.json @@ -14,6 +14,7 @@ "create-qwik": "1.17.2", "create-vite": "7.1.1", "create-react-router": "7.9.5", + "create-rwsdk": "3.1.0", "create-solid": "0.6.11", "create-vue": "3.18.2", "create-waku": "0.12.5-0.27.0-0", diff --git a/packages/create-cloudflare/src/templates.ts b/packages/create-cloudflare/src/templates.ts index ed10060e0446..a7066fb6cc68 100644 --- a/packages/create-cloudflare/src/templates.ts +++ b/packages/create-cloudflare/src/templates.ts @@ -39,6 +39,7 @@ import queuesTemplate from "templates/queues/c3"; import qwikTemplate from "templates/qwik/c3"; import reactRouterTemplate from "templates/react-router/c3"; import reactTemplate from "templates/react/c3"; +import redwoodTemplate from "templates/redwood/c3"; import scheduledTemplate from "templates/scheduled/c3"; import solidTemplate from "templates/solid/c3"; import svelteTemplate from "templates/svelte/c3"; @@ -203,6 +204,7 @@ export function getFrameworkMap({ experimental = false }): TemplateMap { qwik: qwikTemplate, react: reactTemplate, "react-router": reactRouterTemplate, + redwood: redwoodTemplate, solid: solidTemplate, svelte: svelteTemplate, "tanstack-start": tanStackStartTemplate, diff --git a/packages/create-cloudflare/templates/redwood/c3.ts b/packages/create-cloudflare/templates/redwood/c3.ts new file mode 100644 index 000000000000..ca5b4a80111a --- /dev/null +++ b/packages/create-cloudflare/templates/redwood/c3.ts @@ -0,0 +1,34 @@ +import { logRaw } from "@cloudflare/cli"; +import { runFrameworkGenerator } from "frameworks/index"; +import { detectPackageManager } from "helpers/packageManagers"; +import type { TemplateConfig } from "../../src/templates"; +import type { C3Context } from "types"; + +const { npm } = detectPackageManager(); + +const generate = async (ctx: C3Context) => { + await runFrameworkGenerator(ctx, [ctx.project.name]); + + logRaw(""); +}; + +const config: TemplateConfig = { + configVersion: 1, + id: "redwood", + platform: "workers", + frameworkCli: "create-rwsdk", + displayName: "RedwoodSDK", + generate, + transformPackageJson: async () => ({ + scripts: { + deploy: `${npm} run release`, + preview: `${npm} run preview`, + "cf-typegen": `${npm} run generate`, + }, + }), + devScript: "dev", + deployScript: "release", + previewScript: "preview", +}; +export default config; + From 523dfe605511d8e1be2cf5954c26cf509ddebd3b Mon Sep 17 00:00:00 2001 From: Peter Pistorius Date: Sat, 8 Nov 2025 11:35:19 +0200 Subject: [PATCH 2/5] Add tests. --- .../create-cloudflare/e2e/tests/cli/cli.test.ts | 2 +- .../e2e/tests/frameworks/test-config.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/create-cloudflare/e2e/tests/cli/cli.test.ts b/packages/create-cloudflare/e2e/tests/cli/cli.test.ts index 5341638b9b15..5b0291b19bdc 100644 --- a/packages/create-cloudflare/e2e/tests/cli/cli.test.ts +++ b/packages/create-cloudflare/e2e/tests/cli/cli.test.ts @@ -589,7 +589,7 @@ describe("Create Cloudflare CLI", () => { npm create cloudflare -- --framework next -- --ts pnpm create cloudflare --framework next -- --ts Allowed Values: - analog, angular, astro, docusaurus, gatsby, hono, next, nuxt, qwik, react, react-router, solid, svelte, tanstack-start, vue, waku + analog, angular, astro, docusaurus, gatsby, hono, next, nuxt, qwik, react, react-router, redwood, solid, svelte, tanstack-start, vue, waku --platform= Whether the application should be deployed to Pages or Workers. This is only applicable for Frameworks templates that support both Pages and Workers. Allowed Values: diff --git a/packages/create-cloudflare/e2e/tests/frameworks/test-config.ts b/packages/create-cloudflare/e2e/tests/frameworks/test-config.ts index 124c6e15227a..99a2865473f6 100644 --- a/packages/create-cloudflare/e2e/tests/frameworks/test-config.ts +++ b/packages/create-cloudflare/e2e/tests/frameworks/test-config.ts @@ -602,6 +602,21 @@ function getFrameworkTestConfig(pm: string): NamedFrameworkTestConfig[] { }, nodeCompat: true, }, + { + name: "redwood", + testCommitMessage: true, + timeout: LONG_TIMEOUT, + unsupportedOSs: ["win32"], + verifyDeploy: { + route: "/", + expectedText: "Hello, World!", + }, + verifyPreview: { + route: "/", + expectedText: "Hello, World!", + }, + nodeCompat: true, + }, ]; } From 4f0002161938e95d7e9253fa3d832f12817cd670 Mon Sep 17 00:00:00 2001 From: Peter Pistorius Date: Sat, 8 Nov 2025 11:40:08 +0200 Subject: [PATCH 3/5] Update changeset. --- .changeset/clean-radios-bathe.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/clean-radios-bathe.md diff --git a/.changeset/clean-radios-bathe.md b/.changeset/clean-radios-bathe.md new file mode 100644 index 000000000000..471d0bf41bde --- /dev/null +++ b/.changeset/clean-radios-bathe.md @@ -0,0 +1,5 @@ +--- +"create-cloudflare": patch +--- + +Add RedwoodSDK as a framework option From 6c18786de05ee2ce53d17d560d1fd28b36dec4e3 Mon Sep 17 00:00:00 2001 From: Peter Pistorius Date: Fri, 21 Nov 2025 09:17:30 +0200 Subject: [PATCH 4/5] Fix formatting. --- packages/create-cloudflare/templates/redwood/c3.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/create-cloudflare/templates/redwood/c3.ts b/packages/create-cloudflare/templates/redwood/c3.ts index ca5b4a80111a..d89e62c5fee7 100644 --- a/packages/create-cloudflare/templates/redwood/c3.ts +++ b/packages/create-cloudflare/templates/redwood/c3.ts @@ -31,4 +31,3 @@ const config: TemplateConfig = { previewScript: "preview", }; export default config; - From 6d63b23a81c6a019c83fbcc993f6bb89cefbc86d Mon Sep 17 00:00:00 2001 From: Peter Pistorius Date: Fri, 21 Nov 2025 11:55:43 +0200 Subject: [PATCH 5/5] Fix tests. --- .../create-cloudflare/e2e/tests/frameworks/test-config.ts | 4 ++-- packages/create-cloudflare/templates/redwood/c3.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/create-cloudflare/e2e/tests/frameworks/test-config.ts b/packages/create-cloudflare/e2e/tests/frameworks/test-config.ts index c23f03d6d18e..f13990a751ca 100644 --- a/packages/create-cloudflare/e2e/tests/frameworks/test-config.ts +++ b/packages/create-cloudflare/e2e/tests/frameworks/test-config.ts @@ -609,11 +609,11 @@ function getFrameworkTestConfig(pm: string): NamedFrameworkTestConfig[] { unsupportedOSs: ["win32"], verifyDeploy: { route: "/", - expectedText: "Hello, World!", + expectedText: "RedwoodSDK", }, verifyPreview: { route: "/", - expectedText: "Hello, World!", + expectedText: "RedwoodSDK", }, nodeCompat: true, }, diff --git a/packages/create-cloudflare/templates/redwood/c3.ts b/packages/create-cloudflare/templates/redwood/c3.ts index d89e62c5fee7..b84b3aea72f8 100644 --- a/packages/create-cloudflare/templates/redwood/c3.ts +++ b/packages/create-cloudflare/templates/redwood/c3.ts @@ -22,8 +22,8 @@ const config: TemplateConfig = { transformPackageJson: async () => ({ scripts: { deploy: `${npm} run release`, - preview: `${npm} run preview`, - "cf-typegen": `${npm} run generate`, + preview: `${npm} run build && wrangler dev`, + "cf-typegen": `wrangler types`, }, }), devScript: "dev",