Skip to content

Commit 9d9952b

Browse files
committed
feat: add Waku to C3
Fixes cloudflare#7594. Adding a C3 template for Waku, a minimal React framework. https://waku.gg/ - Tests - [ ] TODO (before merge) - [x] Tests included - [ ] Tests not necessary because: - E2E Tests CI Job required? (Use "e2e" label or ask maintainer to run separately) - [ ] I don't know - [x] Required - [ ] Not required because: - Public documentation - [ ] TODO (before merge) - [x] Cloudflare docs PR(s): <cloudflare/cloudflare-docs#20444> - [ ] Documentation not necessary because:
1 parent 08b8c46 commit 9d9952b

File tree

7 files changed

+117
-1
lines changed

7 files changed

+117
-1
lines changed

.vscode/settings.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,5 +89,8 @@
8989
"mode": "auto"
9090
}
9191
],
92-
"editor.formatOnSave": true
92+
"editor.formatOnSave": true,
93+
"[jsonc]": {
94+
"editor.defaultFormatter": "esbenp.prettier-vscode"
95+
}
9396
}

packages/create-cloudflare/e2e-tests/frameworks/framework-test-config-experimental.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,5 +150,22 @@ export default function getFrameworkTestConfigExperimental() {
150150
expectedText: "C3_TEST",
151151
},
152152
},
153+
waku: {
154+
testCommitMessage: true,
155+
timeout: LONG_TIMEOUT,
156+
unsupportedOSs: ["win32"],
157+
verifyDeploy: {
158+
route: "/",
159+
expectedText: "Waku",
160+
},
161+
verifyPreview: {
162+
route: "/",
163+
expectedText: "Waku",
164+
},
165+
verifyBuildCfTypes: {
166+
outputFile: "worker-configuration.d.ts",
167+
envInterfaceName: "Env",
168+
},
169+
},
153170
};
154171
}

packages/create-cloudflare/src/frameworks/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"create-remix": "2.15.3",
1717
"create-solid": "0.5.14",
1818
"create-vue": "3.14.2",
19+
"create-waku": "0.11.3-0.21.22-0",
1920
"gatsby": "5.14.1",
2021
"sv": "0.6.23",
2122
"nuxi": "3.21.1"

packages/create-cloudflare/src/templates.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import qwikTemplateExperimental from "templates-experimental/qwik/c3";
2828
import remixTemplateExperimental from "templates-experimental/remix/c3";
2929
import solidTemplateExperimental from "templates-experimental/solid/c3";
3030
import svelteTemplateExperimental from "templates-experimental/svelte/c3";
31+
import wakuTemplateExperimental from "templates-experimental/waku/c3";
3132
import analogTemplate from "templates/analog/c3";
3233
import angularTemplate from "templates/angular/c3";
3334
import astroTemplate from "templates/astro/c3";
@@ -183,6 +184,7 @@ export function getFrameworkMap({ experimental = false }): TemplateMap {
183184
remix: remixTemplateExperimental,
184185
solid: solidTemplateExperimental,
185186
svelte: svelteTemplateExperimental,
187+
waku: wakuTemplateExperimental,
186188
};
187189
} else {
188190
return {
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import { logRaw } from "@cloudflare/cli";
2+
import { brandColor, dim } from "@cloudflare/cli/colors";
3+
import { runFrameworkGenerator } from "frameworks/index";
4+
import { detectPackageManager } from "helpers/packageManagers";
5+
import { installPackages } from "helpers/packages";
6+
import type { TemplateConfig } from "../../src/templates";
7+
import type { C3Context } from "types";
8+
9+
const { npm } = detectPackageManager();
10+
11+
const generate = async (ctx: C3Context) => {
12+
await runFrameworkGenerator(ctx, [
13+
"--project-name",
14+
ctx.project.name,
15+
"--template",
16+
"07_cloudflare",
17+
]);
18+
19+
logRaw(""); // newline
20+
};
21+
22+
const configure = async () => {
23+
await installPackages(["wrangler@latest"], {
24+
dev: true,
25+
startText: "Updating the Wrangler version",
26+
doneText: `${brandColor(`updated`)} ${dim("wrangler@latest")}`,
27+
});
28+
};
29+
30+
const config: TemplateConfig = {
31+
configVersion: 1,
32+
id: "waku",
33+
frameworkCli: "create-waku",
34+
platform: "workers",
35+
displayName: "Waku",
36+
copyFiles: {
37+
path: "./templates",
38+
},
39+
path: "templates-experimental/waku",
40+
generate,
41+
configure,
42+
transformPackageJson: async () => ({
43+
scripts: {
44+
deploy: `${npm} run build && wrangler deploy`,
45+
preview: `${npm} run build && wrangler dev`,
46+
},
47+
}),
48+
devScript: "dev",
49+
deployScript: "deploy",
50+
previewScript: "preview",
51+
};
52+
export default config;
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2+
3+
# dependencies
4+
/node_modules
5+
6+
/dist
7+
8+
# misc
9+
.DS_Store
10+
*.pem
11+
12+
# debug
13+
npm-debug.log*
14+
yarn-debug.log*
15+
yarn-error.log*
16+
17+
# local env files
18+
.env*.local
19+
20+
# typescript
21+
*.tsbuildinfo
22+
next-env.d.ts
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"name": "<TBD>",
3+
"main": "./dist/worker/serve-cloudflare.js",
4+
// https://developers.cloudflare.com/workers/platform/compatibility-dates
5+
"compatibility_date": "<TBD>",
6+
// nodejs_als is required for Waku server-side request context
7+
// It can be removed if only building static pages
8+
"compatibility_flags": ["nodejs_als"],
9+
// https://developers.cloudflare.com/workers/static-assets/binding/
10+
"assets": {
11+
"binding": "ASSETS",
12+
"directory": "./dist/assets",
13+
"html_handling": "drop-trailing-slash",
14+
"not_found_handling": "404-page"
15+
},
16+
"vars": {
17+
"MAX_ITEMS": 10
18+
}
19+
}

0 commit comments

Comments
 (0)