@cloudflare/vite-plugin 0.0.0-fcaa02cdf → 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -34
- package/dist/index.d.ts +7 -0
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# `@cloudflare/vite-plugin`
|
|
2
2
|
|
|
3
|
-
[Intro](#intro) | [Quick start](#quick-start) | [Tutorial](#tutorial) | [API](#api) | [Cloudflare environments](#
|
|
3
|
+
[Intro](#intro) | [Quick start](#quick-start) | [Tutorial](#tutorial) | [API](#api) | [Cloudflare environments](#cloudflare-environments) | [Migrating from `wrangler dev`](#migrating-from-wrangler-dev)
|
|
4
4
|
|
|
5
5
|
## Intro
|
|
6
6
|
|
|
@@ -16,23 +16,42 @@ Your Worker code runs inside [workerd](https://github.com/cloudflare/workerd), m
|
|
|
16
16
|
|
|
17
17
|
## Quick start
|
|
18
18
|
|
|
19
|
+
### Start with a basic `package.json`
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"name": "cloudflare-vite-quick-start",
|
|
24
|
+
"private": true,
|
|
25
|
+
"version": "0.0.0",
|
|
26
|
+
"type": "module",
|
|
27
|
+
"scripts": {
|
|
28
|
+
"dev": "vite",
|
|
29
|
+
"build": "vite build",
|
|
30
|
+
"preview": "vite preview"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
> [!NOTE]
|
|
36
|
+
> Ensure that you include `"type": "module"` in order to use ES modules by default.
|
|
37
|
+
|
|
19
38
|
### Install the dependencies
|
|
20
39
|
|
|
21
40
|
```sh
|
|
22
|
-
npm install @cloudflare/vite-plugin wrangler --save-dev
|
|
41
|
+
npm install vite @cloudflare/vite-plugin wrangler --save-dev
|
|
23
42
|
```
|
|
24
43
|
|
|
25
|
-
###
|
|
44
|
+
### Create your Vite config file and include the Cloudflare plugin
|
|
26
45
|
|
|
27
46
|
```ts
|
|
28
47
|
// vite.config.ts
|
|
29
48
|
|
|
30
|
-
import { defineConfig } from
|
|
31
|
-
import { cloudflare } from
|
|
49
|
+
import { defineConfig } from "vite";
|
|
50
|
+
import { cloudflare } from "@cloudflare/vite-plugin";
|
|
32
51
|
|
|
33
52
|
export default defineConfig({
|
|
34
53
|
plugins: [cloudflare()],
|
|
35
|
-
})
|
|
54
|
+
});
|
|
36
55
|
```
|
|
37
56
|
|
|
38
57
|
### Create your Worker config file
|
|
@@ -40,7 +59,7 @@ export default defineConfig({
|
|
|
40
59
|
```toml
|
|
41
60
|
# wrangler.toml
|
|
42
61
|
|
|
43
|
-
name = "
|
|
62
|
+
name = "cloudflare-vite-quick-start"
|
|
44
63
|
compatibility_date = "2024-12-30"
|
|
45
64
|
main = "./src/index.ts"
|
|
46
65
|
```
|
|
@@ -52,12 +71,12 @@ main = "./src/index.ts"
|
|
|
52
71
|
|
|
53
72
|
export default {
|
|
54
73
|
fetch() {
|
|
55
|
-
return new Response(`Running in ${navigator.userAgent}!`)
|
|
74
|
+
return new Response(`Running in ${navigator.userAgent}!`);
|
|
56
75
|
},
|
|
57
|
-
}
|
|
76
|
+
};
|
|
58
77
|
```
|
|
59
78
|
|
|
60
|
-
You can now develop (`
|
|
79
|
+
You can now develop (`npm run dev`), build (`npm run build`), preview (`npm run preview`), and deploy (`npm exec wrangler deploy`) your application.
|
|
61
80
|
|
|
62
81
|
## Tutorial
|
|
63
82
|
|
|
@@ -88,13 +107,13 @@ npm install @cloudflare/vite-plugin wrangler --save-dev
|
|
|
88
107
|
```ts
|
|
89
108
|
// vite.config.ts
|
|
90
109
|
|
|
91
|
-
import { defineConfig } from
|
|
92
|
-
import react from
|
|
93
|
-
import { cloudflare } from
|
|
110
|
+
import { defineConfig } from "vite";
|
|
111
|
+
import react from "@vitejs/plugin-react";
|
|
112
|
+
import { cloudflare } from "@cloudflare/vite-plugin";
|
|
94
113
|
|
|
95
114
|
export default defineConfig({
|
|
96
115
|
plugins: [react(), cloudflare()],
|
|
97
|
-
})
|
|
116
|
+
});
|
|
98
117
|
```
|
|
99
118
|
|
|
100
119
|
#### Create your Worker config file
|
|
@@ -181,22 +200,22 @@ The assets `binding` defined here will allow you to access the assets functional
|
|
|
181
200
|
// api/index.ts
|
|
182
201
|
|
|
183
202
|
interface Env {
|
|
184
|
-
ASSETS: Fetcher
|
|
203
|
+
ASSETS: Fetcher;
|
|
185
204
|
}
|
|
186
205
|
|
|
187
206
|
export default {
|
|
188
207
|
fetch(request, env) {
|
|
189
|
-
const url = new URL(request.url)
|
|
208
|
+
const url = new URL(request.url);
|
|
190
209
|
|
|
191
|
-
if (url.pathname.startsWith(
|
|
210
|
+
if (url.pathname.startsWith("/api/")) {
|
|
192
211
|
return Response.json({
|
|
193
|
-
name:
|
|
194
|
-
})
|
|
212
|
+
name: "Cloudflare",
|
|
213
|
+
});
|
|
195
214
|
}
|
|
196
215
|
|
|
197
|
-
return env.ASSETS.fetch(request)
|
|
216
|
+
return env.ASSETS.fetch(request);
|
|
198
217
|
},
|
|
199
|
-
} satisfies ExportedHandler<Env
|
|
218
|
+
} satisfies ExportedHandler<Env>;
|
|
200
219
|
```
|
|
201
220
|
|
|
202
221
|
The Worker above will be invoked for any request not matching a static asset.
|
|
@@ -211,14 +230,14 @@ Replace the file contents with the following code:
|
|
|
211
230
|
```tsx
|
|
212
231
|
// src/App.tsx
|
|
213
232
|
|
|
214
|
-
import { useState } from
|
|
215
|
-
import reactLogo from
|
|
216
|
-
import viteLogo from
|
|
217
|
-
import
|
|
233
|
+
import { useState } from "react";
|
|
234
|
+
import reactLogo from "./assets/react.svg";
|
|
235
|
+
import viteLogo from "/vite.svg";
|
|
236
|
+
import "./App.css";
|
|
218
237
|
|
|
219
238
|
function App() {
|
|
220
|
-
const [count, setCount] = useState(0)
|
|
221
|
-
const [name, setName] = useState(
|
|
239
|
+
const [count, setCount] = useState(0);
|
|
240
|
+
const [name, setName] = useState("unknown");
|
|
222
241
|
|
|
223
242
|
return (
|
|
224
243
|
<>
|
|
@@ -245,9 +264,9 @@ function App() {
|
|
|
245
264
|
<div className="card">
|
|
246
265
|
<button
|
|
247
266
|
onClick={() => {
|
|
248
|
-
fetch(
|
|
267
|
+
fetch("/api/")
|
|
249
268
|
.then((res) => res.json() as Promise<{ name: string }>)
|
|
250
|
-
.then((data) => setName(data.name))
|
|
269
|
+
.then((data) => setName(data.name));
|
|
251
270
|
}}
|
|
252
271
|
aria-label="get name"
|
|
253
272
|
>
|
|
@@ -261,10 +280,10 @@ function App() {
|
|
|
261
280
|
Click on the Vite and React logos to learn more
|
|
262
281
|
</p>
|
|
263
282
|
</>
|
|
264
|
-
)
|
|
283
|
+
);
|
|
265
284
|
}
|
|
266
285
|
|
|
267
|
-
export default App
|
|
286
|
+
export default App;
|
|
268
287
|
```
|
|
269
288
|
|
|
270
289
|
Now, if you click the button, it will display 'Name from API is: Cloudflare'.
|
|
@@ -310,12 +329,12 @@ The `cloudflare` plugin should be included in the Vite `plugins` array:
|
|
|
310
329
|
```ts
|
|
311
330
|
// vite.config.ts
|
|
312
331
|
|
|
313
|
-
import { defineConfig } from
|
|
314
|
-
import { cloudflare } from
|
|
332
|
+
import { defineConfig } from "vite";
|
|
333
|
+
import { cloudflare } from "@cloudflare/vite-plugin";
|
|
315
334
|
|
|
316
335
|
export default defineConfig({
|
|
317
336
|
plugins: [cloudflare()],
|
|
318
|
-
})
|
|
337
|
+
});
|
|
319
338
|
```
|
|
320
339
|
|
|
321
340
|
It accepts an optional `PluginConfig` parameter.
|
package/dist/index.d.ts
CHANGED
|
@@ -19,6 +19,13 @@ interface PluginConfig extends EntryWorkerConfig {
|
|
|
19
19
|
persistState?: PersistState;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Vite plugin that enables a full-featured integration between Vite and the Cloudflare Workers runtime.
|
|
24
|
+
*
|
|
25
|
+
* See the [README](https://github.com/cloudflare/workers-sdk/tree/main/packages/vite-plugin-cloudflare#readme) for more details.
|
|
26
|
+
*
|
|
27
|
+
* @param pluginConfig An optional {@link PluginConfig} object.
|
|
28
|
+
*/
|
|
22
29
|
declare function cloudflare(pluginConfig?: PluginConfig): vite.Plugin;
|
|
23
30
|
|
|
24
31
|
export { cloudflare };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudflare/vite-plugin",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.1",
|
|
4
4
|
"description": "Cloudflare plugin for Vite",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@hattip/adapter-node": "^0.0.49",
|
|
37
37
|
"unenv": "npm:unenv-nightly@2.0.0-20241218-183400-5d6aec3",
|
|
38
38
|
"ws": "^8.18.0",
|
|
39
|
-
"miniflare": "
|
|
39
|
+
"miniflare": "3.20241230.2"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@cloudflare/workers-types": "^4.20241230.0",
|
|
@@ -46,13 +46,13 @@
|
|
|
46
46
|
"tsup": "^8.3.0",
|
|
47
47
|
"typescript": "^5.7.2",
|
|
48
48
|
"vite": "^6.0.7",
|
|
49
|
-
"@cloudflare/workers-shared": "0.
|
|
49
|
+
"@cloudflare/workers-shared": "0.12.2",
|
|
50
50
|
"@cloudflare/workers-tsconfig": "0.0.0",
|
|
51
|
-
"wrangler": "
|
|
51
|
+
"wrangler": "3.104.0"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
54
|
"vite": "^6.0.7",
|
|
55
|
-
"wrangler": "^
|
|
55
|
+
"wrangler": "^3.101.0"
|
|
56
56
|
},
|
|
57
57
|
"publishConfig": {
|
|
58
58
|
"access": "public"
|