Skip to content

Commit f99042c

Browse files
committed
add further instruction details
1 parent 4ace288 commit f99042c

File tree

1 file changed

+71
-45
lines changed
  • src/content/docs/workers/framework-guides/web-apps

1 file changed

+71
-45
lines changed

src/content/docs/workers/framework-guides/web-apps/vike.mdx

Lines changed: 71 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ description: Create a Vike application and deploy it to Cloudflare Workers with
1111
import { Steps, PackageManagers } from "~/components";
1212
import { Tabs, TabItem } from '@astrojs/starlight/components';
1313

14-
You can use Vike with the [`vike-cloudflare`](https://www.npmjs.com/package/vike-cloudflare) extension for a zero-config Cloudflare deployment of your [SSR](https://vike.dev/ssr) or [pre-rendered (aka SSG)](https://vike.dev/pre-rendering) app.
14+
You can use Vike with the [`vike-cloudflare`](https://www.npmjs.com/package/vike-cloudflare) extension for a zero-config Cloudflare deployment of your SSR or pre-rendered (aka SSG) app.
1515

1616

1717
## What is Vike?
@@ -26,59 +26,23 @@ Go to [vike.dev/new](https://vike.dev/new) and select `Cloudflare` to scaffold a
2626

2727
## Add to existing app
2828

29-
### Without a server
29+
See:
30+
- [With server](#with-server) if you use [SSR](https://vike.dev/ssr) (it requires a server).
31+
- [Without server](#without-server) if you [pre-render](https://vike.dev/pre-rendering) all your pages (you don't need a server then).
3032

31-
If you [pre-render](https://vike.dev/pre-rendering) all your pages then you don't need a server — simply add `vike-cloudflare` like this:
33+
### With server
3234

3335
<Steps>
3436

35-
1. <PackageManagers
36-
pkg="vike-cloudflare wrangler cross-env"
37-
dev
38-
/>
39-
40-
2. ```diff lang=ts title="pages/+config.ts"
41-
import type { Config } from 'vike/types'
42-
+ import vikeCloudflare from 'vike-cloudflare/config'
43-
44-
export default {
45-
prerender: true,
46-
+ extends: [vikeCloudflare]
47-
} satisfies Config
48-
```
49-
50-
3. ```diff lang=json title="package.json"
51-
{
52-
"scripts": {
53-
"dev": "vike dev",
54-
+ "preview": "vike build && cross-env NODE_ENV=production wrangler pages dev",
55-
+ "deploy": "vike build && cross-env NODE_ENV=production wrangler pages deploy"
56-
}
57-
}
58-
```
59-
60-
</Steps>
61-
62-
### With a server
63-
64-
If you use [SSR](https://vike.dev/ssr), you must have a server — add `vike-cloudflare` like this:
65-
66-
<Steps>
67-
68-
1. <PackageManagers
69-
pkg="vike-cloudflare wrangler cross-env"
70-
dev
71-
/>
37+
1. <PackageManagers pkg="vike-cloudflare wrangler cross-env" />
7238

7339
2. ```diff lang=ts title="pages/+config.ts"
7440
import type { Config } from 'vike/types'
7541
+ import vikeCloudflare from 'vike-cloudflare/config'
7642

7743
export default {
7844
+ extends: [vikeCloudflare],
79-
+ server: {
80-
+ entry: 'server/index.ts'
81-
+ }
45+
+ server: 'server/index.ts'
8246
} satisfies Config
8347
```
8448

@@ -99,8 +63,10 @@ If you use [SSR](https://vike.dev/ssr), you must have a server — add `vike-clo
9963
+ export default startServer()
10064
```
10165

66+
> If you haven't already, set up a [Hono](https://hono.dev) server and install the `hono` package.
67+
10268
</TabItem>
103-
<TabItem label="HatTip">
69+
<TabItem label="Hattip">
10470

10571
```diff lang=ts title="server/index.ts"
10672
import { createRouter } from '@hattip/router'
@@ -116,10 +82,12 @@ If you use [SSR](https://vike.dev/ssr), you must have a server — add `vike-clo
11682
+ export default startServer()
11783
```
11884

85+
> If you haven't already, set up a [Hattip](https://github.com/hattipjs/hattip) server and install the `@hattip/router` package.
86+
11987
</TabItem>
12088
</Tabs>
12189

122-
> `vike-cloudflare` currently supports [Hono](https://hono.dev) and [HatTip](https://github.com/hattipjs/hattip) — more servers are coming soon.
90+
> `vike-cloudflare` currently only supports Hono and Hattip — more servers are coming soon.
12391
12492
4. ```diff lang=json title="package.json"
12593
{
@@ -130,9 +98,67 @@ If you use [SSR](https://vike.dev/ssr), you must have a server — add `vike-clo
13098
}
13199
}
132100
```
101+
```diff lang=jsonc title="wrangler.jsonc"
102+
+ {
103+
+ "$schema": "node_modules/wrangler/config-schema.json",
104+
+ "compatibility_date": "2025-08-06",
105+
+ "name": "my-vike-cloudflare-app",
106+
+ "pages_build_output_dir": "./dist/cloudflare",
107+
+ // Only needed if your app (or one of your libraries) uses Node.js APIs
108+
+ "compatibility_flags": ["nodejs_compat"]
109+
+ }
110+
```
111+
112+
5. ```diff lang=bash title=".gitignore"
113+
+ .wrangler/
114+
```
115+
116+
</Steps>
117+
118+
### Without server
119+
120+
<Steps>
121+
122+
1. <PackageManagers pkg="vike-cloudflare wrangler cross-env"/>
123+
124+
2. ```diff lang=ts title="pages/+config.ts"
125+
import type { Config } from 'vike/types'
126+
+ import vikeCloudflare from 'vike-cloudflare/config'
127+
128+
export default {
129+
prerender: true,
130+
+ extends: [vikeCloudflare]
131+
} satisfies Config
132+
```
133+
134+
3. ```diff lang=json title="package.json"
135+
{
136+
"scripts": {
137+
"dev": "vike dev",
138+
+ "preview": "vike build && cross-env NODE_ENV=production wrangler pages dev",
139+
+ "deploy": "vike build && cross-env NODE_ENV=production wrangler pages deploy"
140+
}
141+
}
142+
```
143+
```diff lang=jsonc title="wrangler.jsonc"
144+
+ {
145+
+ "$schema": "node_modules/wrangler/config-schema.json",
146+
+ "compatibility_date": "2025-08-06",
147+
+ "name": "my-vike-cloudflare-app",
148+
+ "pages_build_output_dir": "./dist/cloudflare",
149+
+ "assets": {
150+
+ "directory": "./dist/cloudflare"
151+
+ }
152+
+ }
153+
```
154+
155+
4. ```diff lang=bash title=".gitignore"
156+
+ .wrangler/
157+
```
133158

134159
</Steps>
135160

161+
136162
## Cloudflare APIs (bindings)
137163

138164
You can access Cloudflare's APIs (such as [D1](https://developers.cloudflare.com/d1/) and [KV](https://developers.cloudflare.com/kv/)):

0 commit comments

Comments
 (0)