Skip to content

Commit 2cfd2a9

Browse files
Update cloudflare-d1 template to use @cloudflare/vite-plugin (#118)
* Update cloudflare-d1 package to use @cloudflare/vite-plugin * Fix tests * See if previews are the problem * Fix preview test
1 parent 52a4a30 commit 2cfd2a9

File tree

8 files changed

+412
-433
lines changed

8 files changed

+412
-433
lines changed

.tests/test.cloudflare-d1.ts

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,42 +19,39 @@ test("dev", async ({ page, $ }) => {
1919
await workflow({ page, url });
2020

2121
const ignoredLines = [
22-
"The version of Wrangler you are using is now out-of-date",
23-
"Please update to the latest version to prevent critical errors",
24-
"Run `npm install --save-dev wrangler@4` to update to the latest version",
25-
"After installation, run Wrangler with `npx wrangler`"
22+
/Default inspector port \d{4} not available, using \d{4} instead/,
2623
];
2724
const filteredStderr = dev.buffer.stderr
2825
.split("\n")
29-
.filter(line => !ignoredLines.some(ignoredLine => line.includes(ignoredLine)))
30-
.join("\n")
31-
.trim();
26+
.filter(
27+
(line) =>
28+
line && !ignoredLines.some((ignoredLine) => ignoredLine.test(line)),
29+
)
30+
.join("\n");
3231
expect(filteredStderr).toBe("");
3332
});
3433

3534
test("build + start", async ({ page, $ }) => {
3635
await $(`pnpm db:migrate`);
3736

38-
await $(`pnpm build`);
39-
40-
const port1 = await getPort();
41-
const port2 = await getPort();
42-
const start = $(`pnpm start --port ${port1} --inspector-port ${port2}`);
37+
const port = await getPort();
38+
const preview = $(`pnpm preview --port ${port}`);
4339

44-
const url = await matchLine(start.stdout, urlRegex.wrangler);
40+
const url = await matchLine(preview.stdout, urlRegex.viteDev);
4541
await workflow({ page, url });
4642

4743
const ignoredLines = [
48-
"The version of Wrangler you are using is now out-of-date",
49-
"Please update to the latest version to prevent critical errors",
50-
"Run `npm install --save-dev wrangler@4` to update to the latest version",
51-
"After installation, run Wrangler with `npx wrangler`"
44+
/The build was canceled/,
45+
/Error running vite-plugin-cloudflare:nodejs-compat on Tailwind CSS output\. Skipping\./,
46+
/Default inspector port \d{4} not available, using \d{4} instead/,
5247
];
53-
const filteredStderr = start.buffer.stderr
48+
const filteredStderr = preview.buffer.stderr
5449
.split("\n")
55-
.filter(line => !ignoredLines.some(ignoredLine => line.includes(ignoredLine)))
56-
.join("\n")
57-
.trim();
50+
.filter(
51+
(line) =>
52+
line && !ignoredLines.some((ignoredLine) => ignoredLine.test(line)),
53+
)
54+
.join("\n");
5855
expect(filteredStderr).toBe("");
5956
});
6057

.tests/test.cloudflare.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,17 @@ test("dev", async ({ page, $ }) => {
2020
];
2121
const filteredStderr = dev.buffer.stderr
2222
.split("\n")
23-
.filter(line => line && !ignoredLines.some(ignoredLine => ignoredLine.test(line)))
23+
.filter(
24+
(line) =>
25+
line && !ignoredLines.some((ignoredLine) => ignoredLine.test(line)),
26+
)
2427
.join("\n");
2528
expect(filteredStderr).toBe("");
2629
});
2730

2831
test("preview", async ({ page, $ }) => {
29-
const port1 = await getPort();
30-
const preview = $(`pnpm preview --port ${port1}`);
32+
const port = await getPort();
33+
const preview = $(`pnpm preview --port ${port}`);
3134

3235
const url = await matchLine(preview.stdout, urlRegex.viteDev);
3336
await workflow({ page, url });
@@ -39,7 +42,10 @@ test("preview", async ({ page, $ }) => {
3942
];
4043
const filteredStderr = preview.buffer.stderr
4144
.split("\n")
42-
.filter(line => line && !ignoredLines.some(ignoredLine => ignoredLine.test(line)))
45+
.filter(
46+
(line) =>
47+
line && !ignoredLines.some((ignoredLine) => ignoredLine.test(line)),
48+
)
4349
.join("\n");
4450
expect(filteredStderr).toBe("");
4551
});

cloudflare-d1/package.json

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22
"private": true,
33
"type": "module",
44
"scripts": {
5+
"dev": "react-router dev",
56
"build": "react-router build",
7+
"preview": "npm run build && vite preview",
8+
"deploy": "npm run build && wrangler deploy",
69
"db:generate": "dotenv -- drizzle-kit generate",
710
"db:migrate": "wrangler d1 migrations apply --local DB",
811
"db:migrate-production": "dotenv -- drizzle-kit migrate",
9-
"dev": "react-router dev",
10-
"start": "wrangler dev",
11-
"deploy": "npm run build && wrangler deploy",
12-
"typecheck": "wrangler types && react-router typegen && tsc -b"
12+
"cf-typegen": "wrangler types",
13+
"typecheck": "npm run cf-typegen && react-router typegen && tsc -b"
1314
},
1415
"dependencies": {
1516
"@react-router/node": "^7.5.3",
@@ -21,7 +22,8 @@
2122
"react-router": "^7.5.3"
2223
},
2324
"devDependencies": {
24-
"@cloudflare/workers-types": "^4.20250303.0",
25+
"@cloudflare/vite-plugin": "^1.0.12",
26+
"@cloudflare/workers-types": "^4.20250429.0",
2527
"@react-router/dev": "^7.5.3",
2628
"@tailwindcss/vite": "^4.0.0",
2729
"@types/node": "^20",
@@ -31,8 +33,8 @@
3133
"drizzle-kit": "~0.28.1",
3234
"tailwindcss": "^4.0.0",
3335
"typescript": "^5.8.3",
34-
"vite": "^5.4.11",
36+
"vite": "^6.3.3",
3537
"vite-tsconfig-paths": "^5.1.4",
36-
"wrangler": "^3.114.1"
38+
"wrangler": "^4.13.2"
3739
}
3840
}
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import type { Config } from "@react-router/dev/config";
22

33
export default {
4-
// Config options...
5-
// Server-side render by default, to enable SPA mode set this to `false`
64
ssr: true,
5+
future: {
6+
unstable_viteEnvironmentApi: true,
7+
},
78
} satisfies Config;

cloudflare-d1/vite.config.ts

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,14 @@
11
import { reactRouter } from "@react-router/dev/vite";
2-
import { cloudflareDevProxy } from "@react-router/dev/vite/cloudflare";
2+
import { cloudflare } from "@cloudflare/vite-plugin";
33
import tailwindcss from "@tailwindcss/vite";
44
import { defineConfig } from "vite";
55
import tsconfigPaths from "vite-tsconfig-paths";
6-
import { getLoadContext } from "./load-context";
76

8-
export default defineConfig(({ isSsrBuild }) => ({
9-
build: {
10-
rollupOptions: isSsrBuild
11-
? {
12-
input: "./workers/app.ts",
13-
}
14-
: undefined,
15-
},
16-
ssr: {
17-
target: "webworker",
18-
noExternal: true,
19-
resolve: {
20-
conditions: ["workerd", "browser"],
21-
},
22-
optimizeDeps: {
23-
include: [
24-
"react",
25-
"react/jsx-runtime",
26-
"react/jsx-dev-runtime",
27-
"react-dom",
28-
"react-dom/server",
29-
"react-router",
30-
],
31-
},
32-
},
7+
export default defineConfig({
338
plugins: [
34-
cloudflareDevProxy({
35-
getLoadContext,
36-
}),
9+
cloudflare({ viteEnvironment: { name: "ssr" } }),
3710
tailwindcss(),
3811
reactRouter(),
3912
tsconfigPaths(),
4013
],
41-
}));
14+
});

cloudflare-d1/wrangler.jsonc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"$schema": "node_modules/wrangler/config-schema.json",
3+
"name": "react-router-app",
4+
"compatibility_date": "2025-04-04",
5+
"main": "./workers/app.ts",
6+
"vars": {
7+
"VALUE_FROM_CLOUDFLARE": "Hello from Cloudflare"
8+
},
9+
"d1_databases": [
10+
{
11+
"binding": "DB",
12+
"database_name": "your-database-name",
13+
"database_id": "your-database-id",
14+
"migrations_dir": "drizzle"
15+
}
16+
]
17+
}

cloudflare-d1/wrangler.toml

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)