@kood/claude-code 0.1.5 → 0.1.7
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/dist/index.js +21 -243
- package/package.json +1 -1
- package/templates/hono/CLAUDE.md +10 -6
- package/templates/hono/docs/deployment/index.md +5 -0
- package/templates/hono/docs/library/hono/index.md +6 -0
- package/templates/hono/docs/library/prisma/index.md +3 -0
- package/templates/npx/CLAUDE.md +8 -2
- package/templates/tanstack-start/CLAUDE.md +105 -259
- package/templates/tanstack-start/docs/deployment/cloudflare.md +37 -424
- package/templates/tanstack-start/docs/deployment/index.md +57 -286
- package/templates/tanstack-start/docs/deployment/nitro.md +36 -318
- package/templates/tanstack-start/docs/deployment/railway.md +40 -409
- package/templates/tanstack-start/docs/deployment/vercel.md +43 -465
- package/templates/tanstack-start/docs/design/accessibility.md +56 -326
- package/templates/tanstack-start/docs/design/color.md +37 -179
- package/templates/tanstack-start/docs/design/components.md +77 -311
- package/templates/tanstack-start/docs/design/index.md +24 -87
- package/templates/tanstack-start/docs/design/safe-area.md +51 -250
- package/templates/tanstack-start/docs/design/spacing.md +57 -276
- package/templates/tanstack-start/docs/design/tailwind-setup.md +45 -359
- package/templates/tanstack-start/docs/design/typography.md +40 -284
- package/templates/tanstack-start/docs/guides/best-practices.md +3 -8
- package/templates/tanstack-start/docs/guides/env-setup.md +3 -3
- package/templates/tanstack-start/docs/library/better-auth/2fa.md +27 -115
- package/templates/tanstack-start/docs/library/better-auth/advanced.md +22 -105
- package/templates/tanstack-start/docs/library/better-auth/index.md +17 -66
- package/templates/tanstack-start/docs/library/better-auth/plugins.md +11 -88
- package/templates/tanstack-start/docs/library/better-auth/session.md +12 -92
- package/templates/tanstack-start/docs/library/better-auth/setup.md +9 -91
- package/templates/tanstack-start/docs/library/prisma/cloudflare-d1.md +30 -358
- package/templates/tanstack-start/docs/library/prisma/config.md +27 -327
- package/templates/tanstack-start/docs/library/prisma/crud.md +46 -174
- package/templates/tanstack-start/docs/library/prisma/index.md +23 -113
- package/templates/tanstack-start/docs/library/prisma/relations.md +31 -153
- package/templates/tanstack-start/docs/library/prisma/schema.md +40 -217
- package/templates/tanstack-start/docs/library/prisma/setup.md +13 -113
- package/templates/tanstack-start/docs/library/prisma/transactions.md +20 -110
- package/templates/tanstack-start/docs/library/tanstack-query/index.md +12 -99
- package/templates/tanstack-start/docs/library/tanstack-query/invalidation.md +28 -107
- package/templates/tanstack-start/docs/library/tanstack-query/optimistic-updates.md +44 -146
- package/templates/tanstack-start/docs/library/tanstack-query/setup.md +11 -73
- package/templates/tanstack-start/docs/library/tanstack-query/use-mutation.md +33 -127
- package/templates/tanstack-start/docs/library/tanstack-query/use-query.md +49 -149
- package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +19 -112
- package/templates/tanstack-start/docs/library/tanstack-start/index.md +33 -80
- package/templates/tanstack-start/docs/library/tanstack-start/middleware.md +28 -106
- package/templates/tanstack-start/docs/library/tanstack-start/routing.md +21 -118
- package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +41 -172
- package/templates/tanstack-start/docs/library/tanstack-start/setup.md +6 -39
- package/templates/tanstack-start/docs/library/zod/basic-types.md +33 -145
- package/templates/tanstack-start/docs/library/zod/complex-types.md +32 -156
- package/templates/tanstack-start/docs/library/zod/index.md +22 -150
- package/templates/tanstack-start/docs/library/zod/transforms.md +20 -129
- package/templates/tanstack-start/docs/library/zod/validation.md +39 -155
- package/templates/hono/docs/commands/git.md +0 -145
- package/templates/hono/docs/mcp/context7.md +0 -106
- package/templates/hono/docs/mcp/index.md +0 -176
- package/templates/hono/docs/mcp/sequential-thinking.md +0 -101
- package/templates/hono/docs/mcp/serena.md +0 -269
- package/templates/hono/docs/mcp/sgrep.md +0 -105
- package/templates/hono/docs/skills/gemini-review/SKILL.md +0 -220
- package/templates/hono/docs/skills/gemini-review/references/checklists.md +0 -136
- package/templates/hono/docs/skills/gemini-review/references/prompt-templates.md +0 -303
- package/templates/npx/docs/commands/git.md +0 -145
- package/templates/npx/docs/mcp/index.md +0 -60
- package/templates/npx/docs/skills/gemini-review/SKILL.md +0 -220
- package/templates/npx/docs/skills/gemini-review/references/checklists.md +0 -134
- package/templates/npx/docs/skills/gemini-review/references/prompt-templates.md +0 -301
- package/templates/tanstack-start/docs/commands/git.md +0 -145
- package/templates/tanstack-start/docs/mcp/context7.md +0 -204
- package/templates/tanstack-start/docs/mcp/index.md +0 -177
- package/templates/tanstack-start/docs/mcp/sequential-thinking.md +0 -180
- package/templates/tanstack-start/docs/mcp/serena.md +0 -269
- package/templates/tanstack-start/docs/mcp/sgrep.md +0 -174
- package/templates/tanstack-start/docs/skills/gemini-review/SKILL.md +0 -220
- package/templates/tanstack-start/docs/skills/gemini-review/references/checklists.md +0 -144
- package/templates/tanstack-start/docs/skills/gemini-review/references/prompt-templates.md +0 -292
|
@@ -1,76 +1,11 @@
|
|
|
1
1
|
# Cloudflare 배포
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
> **Source**: [TanStack Start Hosting](https://tanstack.com/start/latest/docs/framework/react/hosting)
|
|
5
|
-
|
|
6
|
-
Cloudflare는 Workers와 Pages 두 가지 배포 옵션을 제공합니다.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 🚀 Quick Reference (복사용)
|
|
11
|
-
|
|
12
|
-
### Workers 직접 통합 (권장)
|
|
3
|
+
## Quick Reference (Workers 직접 통합)
|
|
13
4
|
|
|
14
5
|
```typescript
|
|
15
6
|
// vite.config.ts
|
|
16
|
-
import { defineConfig } from 'vite'
|
|
17
|
-
import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
18
7
|
import { cloudflare } from '@cloudflare/vite-plugin'
|
|
19
|
-
import viteReact from '@vitejs/plugin-react'
|
|
20
|
-
|
|
21
|
-
export default defineConfig({
|
|
22
|
-
plugins: [
|
|
23
|
-
cloudflare({ viteEnvironment: { name: 'ssr' } }),
|
|
24
|
-
tanstackStart(),
|
|
25
|
-
viteReact(),
|
|
26
|
-
],
|
|
27
|
-
})
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
```jsonc
|
|
31
|
-
// wrangler.jsonc
|
|
32
|
-
{
|
|
33
|
-
"$schema": "node_modules/wrangler/config-schema.json",
|
|
34
|
-
"name": "my-tanstack-app",
|
|
35
|
-
"compatibility_date": "2024-09-19",
|
|
36
|
-
"compatibility_flags": ["nodejs_compat"],
|
|
37
|
-
"main": "@tanstack/react-start/server-entry"
|
|
38
|
-
}
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
yarn build && wrangler deploy
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## 배포 옵션 비교
|
|
48
|
-
|
|
49
|
-
| 옵션 | 방식 | 특징 | 권장 |
|
|
50
|
-
|------|------|------|------|
|
|
51
|
-
| **Workers** | `@cloudflare/vite-plugin` 직접 통합 | 서버리스 컴퓨팅, KV/D1 통합, 최적화 | ✅ |
|
|
52
|
-
| **Pages** | Nitro `cloudflare_pages` preset | 정적 사이트 + Functions | - |
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## 방식 1: Cloudflare Workers (직접 통합 - 권장)
|
|
57
|
-
|
|
58
|
-
TanStack Start 공식 권장 방식입니다.
|
|
59
|
-
|
|
60
|
-
### 1. 패키지 설치
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
yarn add -D @cloudflare/vite-plugin wrangler
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### 2. Vite 설정
|
|
67
|
-
|
|
68
|
-
```typescript
|
|
69
|
-
// vite.config.ts
|
|
70
|
-
import { defineConfig } from 'vite'
|
|
71
8
|
import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
72
|
-
import { cloudflare } from '@cloudflare/vite-plugin'
|
|
73
|
-
import viteReact from '@vitejs/plugin-react'
|
|
74
9
|
|
|
75
10
|
export default defineConfig({
|
|
76
11
|
plugins: [
|
|
@@ -81,439 +16,117 @@ export default defineConfig({
|
|
|
81
16
|
})
|
|
82
17
|
```
|
|
83
18
|
|
|
84
|
-
### 3. Wrangler 설정
|
|
85
|
-
|
|
86
19
|
```jsonc
|
|
87
20
|
// wrangler.jsonc
|
|
88
21
|
{
|
|
89
|
-
"
|
|
90
|
-
"name": "my-tanstack-app",
|
|
22
|
+
"name": "my-app",
|
|
91
23
|
"compatibility_date": "2024-09-19",
|
|
92
24
|
"compatibility_flags": ["nodejs_compat"],
|
|
93
25
|
"main": "@tanstack/react-start/server-entry"
|
|
94
26
|
}
|
|
95
27
|
```
|
|
96
28
|
|
|
97
|
-
### 4. 빌드 및 배포
|
|
98
|
-
|
|
99
29
|
```bash
|
|
100
|
-
|
|
101
|
-
yarn build
|
|
102
|
-
|
|
103
|
-
# 배포
|
|
104
|
-
wrangler deploy
|
|
105
|
-
|
|
106
|
-
# 또는 한번에
|
|
30
|
+
yarn add -D @cloudflare/vite-plugin wrangler
|
|
107
31
|
yarn build && wrangler deploy
|
|
108
32
|
```
|
|
109
33
|
|
|
110
34
|
---
|
|
111
35
|
|
|
112
|
-
##
|
|
113
|
-
|
|
114
|
-
Nitro 배포 레이어를 사용하는 방식입니다.
|
|
115
|
-
|
|
116
|
-
### 1. Nitro 설치
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
yarn add nitro@3
|
|
120
|
-
```
|
|
36
|
+
## 배포 옵션
|
|
121
37
|
|
|
122
|
-
|
|
38
|
+
| 옵션 | 방식 | 권장 |
|
|
39
|
+
|------|------|------|
|
|
40
|
+
| Workers | 직접 통합 | ✅ |
|
|
41
|
+
| Pages | Nitro `cloudflare_pages` | - |
|
|
123
42
|
|
|
124
|
-
|
|
125
|
-
// vite.config.ts
|
|
126
|
-
import { defineConfig } from 'vite'
|
|
127
|
-
import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
|
128
|
-
import { nitro } from 'nitro/vite'
|
|
129
|
-
import viteReact from '@vitejs/plugin-react'
|
|
130
|
-
|
|
131
|
-
export default defineConfig({
|
|
132
|
-
plugins: [
|
|
133
|
-
tanstackStart(),
|
|
134
|
-
nitro(),
|
|
135
|
-
viteReact(),
|
|
136
|
-
],
|
|
137
|
-
})
|
|
138
|
-
```
|
|
43
|
+
---
|
|
139
44
|
|
|
140
|
-
|
|
45
|
+
## Pages (Nitro)
|
|
141
46
|
|
|
142
47
|
```typescript
|
|
143
48
|
// nitro.config.ts
|
|
144
|
-
import { defineNitroConfig } from 'nitro/config'
|
|
145
|
-
|
|
146
49
|
export default defineNitroConfig({
|
|
147
50
|
preset: 'cloudflare_pages',
|
|
148
|
-
|
|
149
|
-
// Nitro v3 필수 설정
|
|
150
51
|
compatibilityDate: '2024-09-19',
|
|
151
|
-
|
|
152
|
-
cloudflare: {
|
|
153
|
-
deployConfig: true, // wrangler.json 자동 생성
|
|
154
|
-
nodeCompat: true, // Node.js API 호환성
|
|
155
|
-
},
|
|
52
|
+
cloudflare: { deployConfig: true, nodeCompat: true },
|
|
156
53
|
})
|
|
157
54
|
```
|
|
158
55
|
|
|
159
|
-
### 4. 빌드 및 배포
|
|
160
|
-
|
|
161
56
|
```bash
|
|
162
|
-
# 빌드
|
|
163
57
|
yarn build
|
|
164
|
-
|
|
165
|
-
# Pages 배포
|
|
166
58
|
wrangler pages deploy .output/public
|
|
167
59
|
```
|
|
168
60
|
|
|
169
61
|
---
|
|
170
62
|
|
|
171
|
-
## Wrangler 설정
|
|
172
|
-
|
|
173
|
-
### wrangler.jsonc (Workers 직접 통합)
|
|
63
|
+
## Wrangler 설정
|
|
174
64
|
|
|
175
65
|
```jsonc
|
|
176
|
-
// wrangler.jsonc
|
|
66
|
+
// wrangler.jsonc (Workers)
|
|
177
67
|
{
|
|
178
|
-
"
|
|
179
|
-
"name": "my-tanstack-app",
|
|
68
|
+
"name": "my-app",
|
|
180
69
|
"compatibility_date": "2024-09-19",
|
|
181
70
|
"compatibility_flags": ["nodejs_compat"],
|
|
182
71
|
"main": "@tanstack/react-start/server-entry",
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
"
|
|
186
|
-
"MY_VAR": "value"
|
|
187
|
-
},
|
|
188
|
-
|
|
189
|
-
// KV 스토리지
|
|
190
|
-
"kv_namespaces": [
|
|
191
|
-
{ "binding": "MY_KV", "id": "your-kv-id" }
|
|
192
|
-
],
|
|
193
|
-
|
|
194
|
-
// D1 데이터베이스
|
|
195
|
-
"d1_databases": [
|
|
196
|
-
{ "binding": "DB", "database_name": "my-database", "database_id": "your-database-id" }
|
|
197
|
-
]
|
|
72
|
+
"vars": { "MY_VAR": "value" },
|
|
73
|
+
"kv_namespaces": [{ "binding": "MY_KV", "id": "kv-id" }],
|
|
74
|
+
"d1_databases": [{ "binding": "DB", "database_name": "my-db", "database_id": "db-id" }]
|
|
198
75
|
}
|
|
199
76
|
```
|
|
200
77
|
|
|
201
|
-
### wrangler.toml (Workers)
|
|
202
|
-
|
|
203
|
-
```toml
|
|
204
|
-
name = "my-app"
|
|
205
|
-
main = "@tanstack/react-start/server-entry"
|
|
206
|
-
compatibility_date = "2024-09-19"
|
|
207
|
-
compatibility_flags = ["nodejs_compat"]
|
|
208
|
-
|
|
209
|
-
[vars]
|
|
210
|
-
MY_VAR = "value"
|
|
211
|
-
|
|
212
|
-
[[kv_namespaces]]
|
|
213
|
-
binding = "MY_KV"
|
|
214
|
-
id = "your-kv-id"
|
|
215
|
-
|
|
216
|
-
[[d1_databases]]
|
|
217
|
-
binding = "DB"
|
|
218
|
-
database_name = "my-database"
|
|
219
|
-
database_id = "your-database-id"
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
### wrangler.toml (Pages with Nitro)
|
|
223
|
-
|
|
224
|
-
```toml
|
|
225
|
-
name = "my-pages-app"
|
|
226
|
-
pages_build_output_dir = ".output/public"
|
|
227
|
-
compatibility_date = "2024-09-19"
|
|
228
|
-
compatibility_flags = ["nodejs_compat"]
|
|
229
|
-
|
|
230
|
-
[[d1_databases]]
|
|
231
|
-
binding = "DB"
|
|
232
|
-
database_name = "my-database"
|
|
233
|
-
database_id = "your-database-id"
|
|
234
|
-
```
|
|
235
|
-
|
|
236
78
|
---
|
|
237
79
|
|
|
238
|
-
## KV
|
|
239
|
-
|
|
240
|
-
### KV 네임스페이스 생성
|
|
241
|
-
|
|
242
|
-
```bash
|
|
243
|
-
# KV 네임스페이스 생성
|
|
244
|
-
wrangler kv:namespace create "MY_KV"
|
|
245
|
-
|
|
246
|
-
# wrangler.jsonc에 바인딩 추가
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
### 코드에서 사용
|
|
80
|
+
## KV / D1 사용
|
|
250
81
|
|
|
251
82
|
```typescript
|
|
252
|
-
// server/api/
|
|
253
|
-
import { defineHandler } from 'nitro/h3'
|
|
254
|
-
|
|
83
|
+
// server/api/example.ts
|
|
255
84
|
export default defineHandler(async (event) => {
|
|
256
85
|
const env = event.context.cloudflare.env
|
|
257
|
-
|
|
258
|
-
// KV 읽기
|
|
259
86
|
const value = await env.MY_KV.get('key')
|
|
260
|
-
|
|
261
|
-
// KV 쓰기
|
|
262
87
|
await env.MY_KV.put('key', 'value')
|
|
263
|
-
|
|
264
|
-
return { value }
|
|
88
|
+
const results = await env.DB.prepare('SELECT * FROM users').all()
|
|
89
|
+
return { value, results }
|
|
265
90
|
})
|
|
266
91
|
```
|
|
267
92
|
|
|
268
93
|
---
|
|
269
94
|
|
|
270
|
-
##
|
|
271
|
-
|
|
272
|
-
### D1 데이터베이스 생성
|
|
95
|
+
## 환경변수
|
|
273
96
|
|
|
274
97
|
```bash
|
|
275
|
-
#
|
|
276
|
-
wrangler d1 create my-database
|
|
277
|
-
|
|
278
|
-
# 마이그레이션 실행
|
|
279
|
-
wrangler d1 migrations apply my-database
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
### 코드에서 사용
|
|
283
|
-
|
|
284
|
-
```typescript
|
|
285
|
-
// server/api/d1-example.ts
|
|
286
|
-
import { defineHandler } from 'nitro/h3'
|
|
287
|
-
|
|
288
|
-
export default defineHandler(async (event) => {
|
|
289
|
-
const env = event.context.cloudflare.env
|
|
290
|
-
|
|
291
|
-
// 쿼리 실행
|
|
292
|
-
const results = await env.DB.prepare(
|
|
293
|
-
'SELECT * FROM users WHERE id = ?'
|
|
294
|
-
).bind(1).all()
|
|
295
|
-
|
|
296
|
-
return results
|
|
297
|
-
})
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
---
|
|
301
|
-
|
|
302
|
-
## 환경변수 관리
|
|
303
|
-
|
|
304
|
-
### 로컬 개발
|
|
305
|
-
|
|
306
|
-
```bash
|
|
307
|
-
# .dev.vars 파일 생성
|
|
98
|
+
# .dev.vars (로컬)
|
|
308
99
|
DATABASE_URL=your-local-url
|
|
309
|
-
API_SECRET=your-secret
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
### 프로덕션
|
|
313
100
|
|
|
314
|
-
|
|
315
|
-
# 시크릿 설정
|
|
101
|
+
# 프로덕션 시크릿
|
|
316
102
|
wrangler secret put API_SECRET
|
|
317
|
-
|
|
318
|
-
# 일반 변수 (wrangler.jsonc)
|
|
319
|
-
{
|
|
320
|
-
"vars": {
|
|
321
|
-
"NODE_ENV": "production"
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
103
|
```
|
|
325
104
|
|
|
326
105
|
---
|
|
327
106
|
|
|
328
|
-
##
|
|
329
|
-
|
|
330
|
-
### Pages
|
|
331
|
-
|
|
332
|
-
```bash
|
|
333
|
-
# 커스텀 도메인 추가
|
|
334
|
-
wrangler pages project add-custom-domain my-app example.com
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
### Workers
|
|
338
|
-
|
|
339
|
-
Cloudflare 대시보드에서 설정하거나:
|
|
107
|
+
## CI/CD
|
|
340
108
|
|
|
341
|
-
```
|
|
342
|
-
#
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
---
|
|
349
|
-
|
|
350
|
-
## 개발 서버
|
|
351
|
-
|
|
352
|
-
```bash
|
|
353
|
-
# Workers 로컬 개발
|
|
354
|
-
wrangler dev
|
|
355
|
-
|
|
356
|
-
# Pages 로컬 개발 (Nitro 사용 시)
|
|
357
|
-
wrangler pages dev .output/public
|
|
358
|
-
|
|
359
|
-
# 로컬 모드 (미니플레어 사용)
|
|
360
|
-
wrangler dev --local
|
|
109
|
+
```yaml
|
|
110
|
+
# .github/workflows/cloudflare.yml
|
|
111
|
+
- uses: cloudflare/wrangler-action@v3
|
|
112
|
+
with:
|
|
113
|
+
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
114
|
+
command: deploy
|
|
361
115
|
```
|
|
362
116
|
|
|
363
117
|
---
|
|
364
118
|
|
|
365
119
|
## 트러블슈팅
|
|
366
120
|
|
|
367
|
-
### Node.js API 호환성
|
|
368
|
-
|
|
369
|
-
Workers 직접 통합 시 `wrangler.jsonc`:
|
|
370
|
-
|
|
371
|
-
```jsonc
|
|
372
|
-
{
|
|
373
|
-
"compatibility_flags": ["nodejs_compat"]
|
|
374
|
-
}
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
Nitro 사용 시 `nitro.config.ts`:
|
|
378
|
-
|
|
379
121
|
```typescript
|
|
380
|
-
|
|
122
|
+
// nitro.config.ts - Node.js 호환성
|
|
123
|
+
cloudflare: { nodeCompat: true }
|
|
381
124
|
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
cloudflare: {
|
|
386
|
-
nodeCompat: true,
|
|
387
|
-
},
|
|
388
|
-
// 또는 특정 폴리필 설정
|
|
389
|
-
unenv: {
|
|
390
|
-
alias: {
|
|
391
|
-
'node:buffer': 'buffer',
|
|
392
|
-
},
|
|
393
|
-
},
|
|
394
|
-
})
|
|
395
|
-
```
|
|
396
|
-
|
|
397
|
-
### 번들 크기 최적화
|
|
398
|
-
|
|
399
|
-
```typescript
|
|
400
|
-
// nitro.config.ts
|
|
401
|
-
import { defineNitroConfig } from 'nitro/config'
|
|
402
|
-
|
|
403
|
-
export default defineNitroConfig({
|
|
404
|
-
preset: 'cloudflare_pages',
|
|
405
|
-
compatibilityDate: '2024-09-19',
|
|
406
|
-
// 외부화할 패키지
|
|
407
|
-
externals: ['@prisma/client'],
|
|
408
|
-
// 트리 쉐이킹
|
|
409
|
-
minify: true,
|
|
410
|
-
})
|
|
125
|
+
// 번들 최적화
|
|
126
|
+
externals: ['@prisma/client']
|
|
127
|
+
minify: true
|
|
411
128
|
```
|
|
412
129
|
|
|
413
|
-
### 로그 확인
|
|
414
|
-
|
|
415
130
|
```bash
|
|
416
|
-
# 실시간 로그
|
|
417
|
-
wrangler tail
|
|
418
|
-
|
|
419
|
-
# 특정 배포 로그
|
|
420
|
-
wrangler tail --deployment-id [id]
|
|
131
|
+
wrangler tail # 실시간 로그
|
|
421
132
|
```
|
|
422
|
-
|
|
423
|
-
---
|
|
424
|
-
|
|
425
|
-
## CI/CD 설정
|
|
426
|
-
|
|
427
|
-
### GitHub Actions (Workers 직접 통합)
|
|
428
|
-
|
|
429
|
-
```yaml
|
|
430
|
-
name: Deploy to Cloudflare Workers
|
|
431
|
-
|
|
432
|
-
on:
|
|
433
|
-
push:
|
|
434
|
-
branches: [main]
|
|
435
|
-
|
|
436
|
-
jobs:
|
|
437
|
-
deploy:
|
|
438
|
-
runs-on: ubuntu-latest
|
|
439
|
-
steps:
|
|
440
|
-
- uses: actions/checkout@v4
|
|
441
|
-
|
|
442
|
-
- name: Setup Node.js
|
|
443
|
-
uses: actions/setup-node@v4
|
|
444
|
-
with:
|
|
445
|
-
node-version: '20'
|
|
446
|
-
cache: 'yarn'
|
|
447
|
-
|
|
448
|
-
- name: Install dependencies
|
|
449
|
-
run: yarn install --frozen-lockfile
|
|
450
|
-
|
|
451
|
-
- name: Build
|
|
452
|
-
run: yarn build
|
|
453
|
-
|
|
454
|
-
- name: Deploy to Workers
|
|
455
|
-
uses: cloudflare/wrangler-action@v3
|
|
456
|
-
with:
|
|
457
|
-
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
458
|
-
command: deploy
|
|
459
|
-
```
|
|
460
|
-
|
|
461
|
-
### GitHub Actions (Pages with Nitro)
|
|
462
|
-
|
|
463
|
-
```yaml
|
|
464
|
-
name: Deploy to Cloudflare Pages
|
|
465
|
-
|
|
466
|
-
on:
|
|
467
|
-
push:
|
|
468
|
-
branches: [main]
|
|
469
|
-
|
|
470
|
-
jobs:
|
|
471
|
-
deploy:
|
|
472
|
-
runs-on: ubuntu-latest
|
|
473
|
-
steps:
|
|
474
|
-
- uses: actions/checkout@v4
|
|
475
|
-
|
|
476
|
-
- name: Setup Node.js
|
|
477
|
-
uses: actions/setup-node@v4
|
|
478
|
-
with:
|
|
479
|
-
node-version: '20'
|
|
480
|
-
cache: 'yarn'
|
|
481
|
-
|
|
482
|
-
- name: Install dependencies
|
|
483
|
-
run: yarn install --frozen-lockfile
|
|
484
|
-
|
|
485
|
-
- name: Build
|
|
486
|
-
run: yarn build
|
|
487
|
-
|
|
488
|
-
- name: Deploy to Pages
|
|
489
|
-
uses: cloudflare/wrangler-action@v3
|
|
490
|
-
with:
|
|
491
|
-
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
492
|
-
command: pages deploy .output/public --project-name=my-app
|
|
493
|
-
```
|
|
494
|
-
|
|
495
|
-
---
|
|
496
|
-
|
|
497
|
-
## package.json 스크립트
|
|
498
|
-
|
|
499
|
-
```json
|
|
500
|
-
{
|
|
501
|
-
"scripts": {
|
|
502
|
-
"dev": "vite dev",
|
|
503
|
-
"build": "vite build && tsc --noEmit",
|
|
504
|
-
"preview": "vite preview",
|
|
505
|
-
"deploy": "yarn build && wrangler deploy"
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
```
|
|
509
|
-
|
|
510
|
-
---
|
|
511
|
-
|
|
512
|
-
## 참고 자료
|
|
513
|
-
|
|
514
|
-
- [TanStack Start Cloudflare Guide](https://developers.cloudflare.com/workers/frameworks/framework-guides/tanstack-start/)
|
|
515
|
-
- [Cloudflare Vite Plugin](https://developers.cloudflare.com/workers/frameworks/vite/)
|
|
516
|
-
- [Cloudflare Workers 문서](https://developers.cloudflare.com/workers/)
|
|
517
|
-
- [Cloudflare Pages 문서](https://developers.cloudflare.com/pages/)
|
|
518
|
-
- [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/)
|
|
519
|
-
- [Nitro Cloudflare Preset](https://nitro.build/deploy/providers/cloudflare)
|