@kood/claude-code 0.1.0

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.
Files changed (78) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +297 -0
  3. package/package.json +47 -0
  4. package/templates/hono/CLAUDE.md +376 -0
  5. package/templates/hono/docs/deployment/cloudflare.md +328 -0
  6. package/templates/hono/docs/deployment/index.md +291 -0
  7. package/templates/hono/docs/git/index.md +180 -0
  8. package/templates/hono/docs/library/hono/error-handling.md +400 -0
  9. package/templates/hono/docs/library/hono/index.md +241 -0
  10. package/templates/hono/docs/library/hono/middleware.md +334 -0
  11. package/templates/hono/docs/library/hono/rpc.md +454 -0
  12. package/templates/hono/docs/library/hono/validation.md +328 -0
  13. package/templates/hono/docs/library/prisma/index.md +427 -0
  14. package/templates/hono/docs/library/zod/index.md +413 -0
  15. package/templates/hono/docs/mcp/context7.md +106 -0
  16. package/templates/hono/docs/mcp/index.md +94 -0
  17. package/templates/hono/docs/mcp/sequential-thinking.md +101 -0
  18. package/templates/hono/docs/mcp/sgrep.md +105 -0
  19. package/templates/hono/docs/skills/gemini-review/SKILL.md +220 -0
  20. package/templates/hono/docs/skills/gemini-review/references/checklists.md +136 -0
  21. package/templates/hono/docs/skills/gemini-review/references/prompt-templates.md +303 -0
  22. package/templates/tanstack-start/CLAUDE.md +279 -0
  23. package/templates/tanstack-start/docs/architecture/architecture.md +547 -0
  24. package/templates/tanstack-start/docs/deployment/cloudflare.md +346 -0
  25. package/templates/tanstack-start/docs/deployment/index.md +102 -0
  26. package/templates/tanstack-start/docs/deployment/nitro.md +211 -0
  27. package/templates/tanstack-start/docs/deployment/railway.md +364 -0
  28. package/templates/tanstack-start/docs/deployment/vercel.md +287 -0
  29. package/templates/tanstack-start/docs/design/accessibility.md +433 -0
  30. package/templates/tanstack-start/docs/design/color.md +235 -0
  31. package/templates/tanstack-start/docs/design/components.md +409 -0
  32. package/templates/tanstack-start/docs/design/index.md +107 -0
  33. package/templates/tanstack-start/docs/design/safe-area.md +317 -0
  34. package/templates/tanstack-start/docs/design/spacing.md +341 -0
  35. package/templates/tanstack-start/docs/design/tailwind-setup.md +470 -0
  36. package/templates/tanstack-start/docs/design/typography.md +324 -0
  37. package/templates/tanstack-start/docs/git/index.md +203 -0
  38. package/templates/tanstack-start/docs/guides/best-practices.md +753 -0
  39. package/templates/tanstack-start/docs/guides/getting-started.md +304 -0
  40. package/templates/tanstack-start/docs/guides/husky-lint-staged.md +303 -0
  41. package/templates/tanstack-start/docs/guides/prettier.md +189 -0
  42. package/templates/tanstack-start/docs/guides/project-templates.md +710 -0
  43. package/templates/tanstack-start/docs/library/better-auth/2fa.md +136 -0
  44. package/templates/tanstack-start/docs/library/better-auth/advanced.md +138 -0
  45. package/templates/tanstack-start/docs/library/better-auth/index.md +83 -0
  46. package/templates/tanstack-start/docs/library/better-auth/plugins.md +111 -0
  47. package/templates/tanstack-start/docs/library/better-auth/session.md +127 -0
  48. package/templates/tanstack-start/docs/library/better-auth/setup.md +123 -0
  49. package/templates/tanstack-start/docs/library/prisma/crud.md +218 -0
  50. package/templates/tanstack-start/docs/library/prisma/index.md +165 -0
  51. package/templates/tanstack-start/docs/library/prisma/relations.md +191 -0
  52. package/templates/tanstack-start/docs/library/prisma/schema.md +177 -0
  53. package/templates/tanstack-start/docs/library/prisma/setup.md +156 -0
  54. package/templates/tanstack-start/docs/library/prisma/transactions.md +140 -0
  55. package/templates/tanstack-start/docs/library/tanstack-query/index.md +146 -0
  56. package/templates/tanstack-start/docs/library/tanstack-query/invalidation.md +146 -0
  57. package/templates/tanstack-start/docs/library/tanstack-query/optimistic-updates.md +196 -0
  58. package/templates/tanstack-start/docs/library/tanstack-query/setup.md +110 -0
  59. package/templates/tanstack-start/docs/library/tanstack-query/use-mutation.md +170 -0
  60. package/templates/tanstack-start/docs/library/tanstack-query/use-query.md +173 -0
  61. package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +171 -0
  62. package/templates/tanstack-start/docs/library/tanstack-start/index.md +114 -0
  63. package/templates/tanstack-start/docs/library/tanstack-start/middleware.md +142 -0
  64. package/templates/tanstack-start/docs/library/tanstack-start/routing.md +163 -0
  65. package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +128 -0
  66. package/templates/tanstack-start/docs/library/tanstack-start/setup.md +85 -0
  67. package/templates/tanstack-start/docs/library/zod/basic-types.md +186 -0
  68. package/templates/tanstack-start/docs/library/zod/complex-types.md +204 -0
  69. package/templates/tanstack-start/docs/library/zod/index.md +186 -0
  70. package/templates/tanstack-start/docs/library/zod/transforms.md +174 -0
  71. package/templates/tanstack-start/docs/library/zod/validation.md +208 -0
  72. package/templates/tanstack-start/docs/mcp/context7.md +204 -0
  73. package/templates/tanstack-start/docs/mcp/index.md +116 -0
  74. package/templates/tanstack-start/docs/mcp/sequential-thinking.md +180 -0
  75. package/templates/tanstack-start/docs/mcp/sgrep.md +174 -0
  76. package/templates/tanstack-start/docs/skills/gemini-review/SKILL.md +220 -0
  77. package/templates/tanstack-start/docs/skills/gemini-review/references/checklists.md +150 -0
  78. package/templates/tanstack-start/docs/skills/gemini-review/references/prompt-templates.md +293 -0
@@ -0,0 +1,346 @@
1
+ # Cloudflare 배포
2
+
3
+ > **상위 문서**: [배포](./index.md)
4
+
5
+ Cloudflare는 Workers와 Pages 두 가지 배포 옵션을 제공합니다.
6
+
7
+ ## 배포 옵션 비교
8
+
9
+ | 옵션 | Preset | 특징 |
10
+ |------|--------|------|
11
+ | **Workers** | `cloudflare_module` | 서버리스 컴퓨팅, KV/D1 통합 |
12
+ | **Pages** | `cloudflare_pages` | 정적 사이트 + Functions |
13
+
14
+ ## Cloudflare Workers
15
+
16
+ ### 1. 패키지 설치
17
+
18
+ ```bash
19
+ yarn add @cloudflare/vite-plugin wrangler -D
20
+ ```
21
+
22
+ ### 2. Vite 설정 (직접 통합)
23
+
24
+ ```typescript
25
+ // vite.config.ts
26
+ import { defineConfig } from 'vite'
27
+ import react from '@vitejs/plugin-react'
28
+ import { tanstackStart } from '@tanstack/react-start/plugin/vite'
29
+ import { cloudflare } from '@cloudflare/vite-plugin'
30
+
31
+ export default defineConfig({
32
+ plugins: [
33
+ cloudflare({ viteEnvironment: { name: 'ssr' } }),
34
+ tanstackStart(),
35
+ react(),
36
+ ],
37
+ })
38
+ ```
39
+
40
+ ### 3. Wrangler 설정
41
+
42
+ ```jsonc
43
+ // wrangler.jsonc
44
+ {
45
+ "$schema": "node_modules/wrangler/config-schema.json",
46
+ "name": "my-tanstack-app",
47
+ "compatibility_date": "2025-01-01",
48
+ "compatibility_flags": ["nodejs_compat"],
49
+ "main": "@tanstack/react-start/server-entry"
50
+ }
51
+ ```
52
+
53
+ ### 4. 배포
54
+
55
+ ```bash
56
+ # 빌드
57
+ yarn build
58
+
59
+ # 배포
60
+ wrangler deploy
61
+ ```
62
+
63
+ ## Cloudflare Pages
64
+
65
+ ### 1. Nitro 설정
66
+
67
+ ```typescript
68
+ // nitro.config.ts
69
+ import { defineNitroConfig } from 'nitro/config'
70
+
71
+ export default defineNitroConfig({
72
+ preset: 'cloudflare_pages',
73
+ // Nitro v3 필수: Static Assets 지원을 위해 2024-09-19 이상 필요
74
+ compatibilityDate: '2024-09-19',
75
+ cloudflare: {
76
+ deployConfig: true, // wrangler.json 자동 생성
77
+ nodeCompat: true, // Node.js API 호환성
78
+ },
79
+ })
80
+ ```
81
+
82
+ ### 2. Vite 설정 (Nitro 통합)
83
+
84
+ ```typescript
85
+ // vite.config.ts
86
+ import { defineConfig } from 'vite'
87
+ import react from '@vitejs/plugin-react'
88
+ import { tanstackStart } from '@tanstack/react-start/plugin/vite'
89
+ import { nitro } from 'nitro/vite'
90
+
91
+ export default defineConfig({
92
+ plugins: [
93
+ tanstackStart(),
94
+ nitro(),
95
+ react(),
96
+ ],
97
+ })
98
+ ```
99
+
100
+ ### 3. 배포
101
+
102
+ ```bash
103
+ # 빌드
104
+ NITRO_PRESET=cloudflare_pages yarn build
105
+
106
+ # Pages 배포
107
+ wrangler pages deploy .output/public
108
+ ```
109
+
110
+ ## Wrangler 설정 상세
111
+
112
+ ### wrangler.toml (Workers)
113
+
114
+ ```toml
115
+ name = "my-app"
116
+ main = ".output/server/index.mjs"
117
+ compatibility_date = "2025-01-01"
118
+ compatibility_flags = ["nodejs_compat"]
119
+
120
+ [vars]
121
+ MY_VAR = "value"
122
+
123
+ [[kv_namespaces]]
124
+ binding = "MY_KV"
125
+ id = "your-kv-id"
126
+
127
+ [[d1_databases]]
128
+ binding = "DB"
129
+ database_name = "my-database"
130
+ database_id = "your-database-id"
131
+ ```
132
+
133
+ ### wrangler.toml (Pages)
134
+
135
+ ```toml
136
+ name = "my-pages-app"
137
+ pages_build_output_dir = ".output/public"
138
+ compatibility_date = "2025-01-01"
139
+ compatibility_flags = ["nodejs_compat"]
140
+
141
+ [[d1_databases]]
142
+ binding = "DB"
143
+ database_name = "my-database"
144
+ database_id = "your-database-id"
145
+ ```
146
+
147
+ ## KV 스토리지 사용
148
+
149
+ ### KV 네임스페이스 생성
150
+
151
+ ```bash
152
+ # KV 네임스페이스 생성
153
+ wrangler kv:namespace create "MY_KV"
154
+
155
+ # wrangler.toml에 바인딩 추가
156
+ ```
157
+
158
+ ### 코드에서 사용
159
+
160
+ ```typescript
161
+ // server/api/kv-example.ts
162
+ import { defineHandler } from 'nitro/h3'
163
+
164
+ export default defineHandler(async (event) => {
165
+ const env = event.context.cloudflare.env
166
+
167
+ // KV 읽기
168
+ const value = await env.MY_KV.get('key')
169
+
170
+ // KV 쓰기
171
+ await env.MY_KV.put('key', 'value')
172
+
173
+ return { value }
174
+ })
175
+ ```
176
+
177
+ ## D1 데이터베이스 사용
178
+
179
+ ### D1 데이터베이스 생성
180
+
181
+ ```bash
182
+ # 데이터베이스 생성
183
+ wrangler d1 create my-database
184
+
185
+ # 마이그레이션 실행
186
+ wrangler d1 migrations apply my-database
187
+ ```
188
+
189
+ ### 코드에서 사용
190
+
191
+ ```typescript
192
+ // server/api/d1-example.ts
193
+ import { defineHandler } from 'nitro/h3'
194
+
195
+ export default defineHandler(async (event) => {
196
+ const env = event.context.cloudflare.env
197
+
198
+ // 쿼리 실행
199
+ const results = await env.DB.prepare(
200
+ 'SELECT * FROM users WHERE id = ?'
201
+ ).bind(1).all()
202
+
203
+ return results
204
+ })
205
+ ```
206
+
207
+ ## 환경변수 관리
208
+
209
+ ### 로컬 개발
210
+
211
+ ```bash
212
+ # .dev.vars 파일 생성
213
+ DATABASE_URL=your-local-url
214
+ API_SECRET=your-secret
215
+ ```
216
+
217
+ ### 프로덕션
218
+
219
+ ```bash
220
+ # 시크릿 설정
221
+ wrangler secret put API_SECRET
222
+
223
+ # 일반 변수 (wrangler.toml)
224
+ [vars]
225
+ NODE_ENV = "production"
226
+ ```
227
+
228
+ ## 커스텀 도메인
229
+
230
+ ### Pages
231
+
232
+ ```bash
233
+ # 커스텀 도메인 추가
234
+ wrangler pages project add-custom-domain my-app example.com
235
+ ```
236
+
237
+ ### Workers
238
+
239
+ Cloudflare 대시보드에서 설정하거나:
240
+
241
+ ```toml
242
+ # wrangler.toml
243
+ routes = [
244
+ { pattern = "example.com/*", zone_name = "example.com" }
245
+ ]
246
+ ```
247
+
248
+ ## 개발 서버
249
+
250
+ ```bash
251
+ # 로컬 개발 (Workers)
252
+ wrangler dev
253
+
254
+ # Pages 로컬 개발
255
+ wrangler pages dev .output/public
256
+
257
+ # 미니플레어 사용
258
+ wrangler dev --local
259
+ ```
260
+
261
+ ## 트러블슈팅
262
+
263
+ ### Node.js API 호환성
264
+
265
+ ```typescript
266
+ // nitro.config.ts
267
+ import { defineNitroConfig } from 'nitro/config'
268
+
269
+ export default defineNitroConfig({
270
+ preset: 'cloudflare_pages',
271
+ compatibilityDate: '2024-09-19',
272
+ cloudflare: {
273
+ nodeCompat: true,
274
+ },
275
+ // 또는 특정 폴리필 설정
276
+ unenv: {
277
+ alias: {
278
+ 'node:buffer': 'buffer',
279
+ },
280
+ },
281
+ })
282
+ ```
283
+
284
+ ### 번들 크기 최적화
285
+
286
+ ```typescript
287
+ // nitro.config.ts
288
+ import { defineNitroConfig } from 'nitro/config'
289
+
290
+ export default defineNitroConfig({
291
+ preset: 'cloudflare_pages',
292
+ compatibilityDate: '2024-09-19',
293
+ // 외부화할 패키지
294
+ externals: ['@prisma/client'],
295
+ // 트리 쉐이킹
296
+ minify: true,
297
+ })
298
+ ```
299
+
300
+ ### 로그 확인
301
+
302
+ ```bash
303
+ # 실시간 로그
304
+ wrangler tail
305
+
306
+ # 특정 배포 로그
307
+ wrangler tail --deployment-id [id]
308
+ ```
309
+
310
+ ## CI/CD 설정
311
+
312
+ ### GitHub Actions
313
+
314
+ ```yaml
315
+ name: Deploy to Cloudflare
316
+
317
+ on:
318
+ push:
319
+ branches: [main]
320
+
321
+ jobs:
322
+ deploy:
323
+ runs-on: ubuntu-latest
324
+ steps:
325
+ - uses: actions/checkout@v4
326
+ - uses: actions/setup-node@v4
327
+ with:
328
+ node-version: '20'
329
+
330
+ - run: yarn install
331
+ - run: yarn build
332
+ env:
333
+ NITRO_PRESET: cloudflare_pages
334
+
335
+ - uses: cloudflare/wrangler-action@v3
336
+ with:
337
+ apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
338
+ command: pages deploy .output/public --project-name=my-app
339
+ ```
340
+
341
+ ## 참고 자료
342
+
343
+ - [Cloudflare Workers 문서](https://developers.cloudflare.com/workers/)
344
+ - [Cloudflare Pages 문서](https://developers.cloudflare.com/pages/)
345
+ - [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/)
346
+ - [Nitro Cloudflare Preset](https://nitro.build/deploy/providers/cloudflare)
@@ -0,0 +1,102 @@
1
+ # 배포 (Deployment)
2
+
3
+ > **Framework**: TanStack Start + Nitro
4
+ > **Source**: [Nitro Deployment](https://nitro.build/deploy), [TanStack Start Hosting](https://tanstack.com/start/latest/docs/framework/react/hosting)
5
+
6
+ TanStack Start는 Nitro를 배포 레이어로 사용하여 다양한 플랫폼에 배포할 수 있습니다.
7
+
8
+ ## 문서 구조
9
+
10
+ - [Nitro 설정](./nitro.md) - Nitro 배포 레이어 기본 설정
11
+ - [Vercel](./vercel.md) - Vercel 배포 가이드
12
+ - [Cloudflare](./cloudflare.md) - Cloudflare Workers/Pages 배포
13
+ - [Railway](./railway.md) - Railway 배포 가이드
14
+
15
+ ## 배포 옵션 비교
16
+
17
+ | 플랫폼 | Preset | Edge 지원 | 특징 |
18
+ |--------|--------|-----------|------|
19
+ | Vercel | `vercel` | ✅ | ISR, 자동 배포, Bun 런타임 |
20
+ | Cloudflare Pages | `cloudflare_pages` | ✅ | 글로벌 CDN, Workers 통합 |
21
+ | Cloudflare Workers | `cloudflare_module` | ✅ | 서버리스 컴퓨팅, KV 스토리지 |
22
+ | Railway | `node-server` | ❌ | Docker 지원, 간편한 설정 |
23
+
24
+ ## 빠른 시작
25
+
26
+ ### 1. Nitro 플러그인 설치
27
+
28
+ ```bash
29
+ yarn add nitro
30
+ ```
31
+
32
+ ### 2. Vite 설정
33
+
34
+ ```typescript
35
+ // vite.config.ts
36
+ import { defineConfig } from 'vite'
37
+ import react from '@vitejs/plugin-react'
38
+ import { tanstackStart } from '@tanstack/react-start/plugin/vite'
39
+ import { nitro } from 'nitro/vite'
40
+
41
+ export default defineConfig({
42
+ plugins: [
43
+ tanstackStart(),
44
+ nitro(),
45
+ react(),
46
+ ],
47
+ })
48
+ ```
49
+
50
+ ### 3. Nitro 설정
51
+
52
+ ```typescript
53
+ // nitro.config.ts
54
+ import { defineNitroConfig } from 'nitro/config'
55
+
56
+ export default defineNitroConfig({
57
+ preset: 'vercel', // 또는 cloudflare_pages, node-server 등
58
+ // Nitro v3 필수: Cloudflare Static Assets 지원을 위해 2024-09-19 이상 필요
59
+ compatibilityDate: '2024-09-19',
60
+ })
61
+ ```
62
+
63
+ ### 4. 빌드 및 배포
64
+
65
+ ```bash
66
+ # 빌드
67
+ yarn build
68
+
69
+ # 또는 환경변수로 preset 지정
70
+ NITRO_PRESET=vercel yarn build
71
+ ```
72
+
73
+ ## Preset 선택 가이드
74
+
75
+ ### Edge 런타임이 필요한 경우
76
+ - **Vercel**: `vercel` (Edge Functions 자동 지원)
77
+ - **Cloudflare**: `cloudflare_pages` 또는 `cloudflare_module`
78
+
79
+ ### Node.js 서버가 필요한 경우
80
+ - **Railway**: `node-server`
81
+ - **기타 Node.js 호스팅**: `node-server`
82
+
83
+ ### 정적 사이트 생성 (SSG)
84
+ - **정적 호스팅**: `static`
85
+
86
+ ## 환경변수
87
+
88
+ 모든 플랫폼에서 공통으로 사용하는 환경변수:
89
+
90
+ ```bash
91
+ # 빌드 시 preset 지정
92
+ NITRO_PRESET=vercel
93
+
94
+ # 런타임 환경변수
95
+ DATABASE_URL=postgresql://...
96
+ API_SECRET=your-secret-key
97
+ ```
98
+
99
+ ## 참고 자료
100
+
101
+ - [Nitro 공식 문서](https://nitro.build)
102
+ - [TanStack Start Hosting](https://tanstack.com/start/latest/docs/framework/react/hosting)
@@ -0,0 +1,211 @@
1
+ # Nitro 배포 레이어
2
+
3
+ > **상위 문서**: [배포](./index.md)
4
+
5
+ Nitro는 TanStack Start의 배포 레이어로, 다양한 플랫폼에 대한 preset을 제공합니다.
6
+
7
+ ## 설치
8
+
9
+ ```bash
10
+ yarn add nitro
11
+ ```
12
+
13
+ ## Vite 통합
14
+
15
+ ```typescript
16
+ // vite.config.ts
17
+ import { defineConfig } from 'vite'
18
+ import react from '@vitejs/plugin-react'
19
+ import { tanstackStart } from '@tanstack/react-start/plugin/vite'
20
+ import { nitro } from 'nitro/vite'
21
+
22
+ export default defineConfig({
23
+ plugins: [
24
+ tanstackStart(),
25
+ nitro(),
26
+ react(),
27
+ ],
28
+ })
29
+ ```
30
+
31
+ ## Nitro 설정
32
+
33
+ ### nitro.config.ts
34
+
35
+ ```typescript
36
+ import { defineNitroConfig } from 'nitro/config'
37
+
38
+ export default defineNitroConfig({
39
+ // 배포 플랫폼 preset
40
+ preset: 'vercel',
41
+
42
+ // 호환성 설정 (Nitro v3 필수)
43
+ compatibilityDate: '2024-09-19',
44
+ })
45
+ ```
46
+
47
+ ### 환경변수로 Preset 지정
48
+
49
+ ```bash
50
+ # 빌드 시 환경변수로 지정
51
+ NITRO_PRESET=cloudflare_pages yarn build
52
+
53
+ # 또는 CLI 옵션
54
+ nitro build --preset cloudflare_pages
55
+ ```
56
+
57
+ ## 주요 Preset 목록
58
+
59
+ ### 서버리스/Edge
60
+
61
+ | Preset | 플랫폼 | 설명 |
62
+ |--------|--------|------|
63
+ | `vercel` | Vercel | Vercel Functions |
64
+ | `cloudflare_pages` | Cloudflare | Pages Functions |
65
+ | `cloudflare_module` | Cloudflare | Workers Module |
66
+ | `netlify` | Netlify | Netlify Functions |
67
+ | `aws_lambda` | AWS | Lambda Functions |
68
+
69
+ ### Node.js 서버
70
+
71
+ | Preset | 플랫폼 | 설명 |
72
+ |--------|--------|------|
73
+ | `node-server` | 범용 | Node.js HTTP 서버 |
74
+ | `node-cluster` | 범용 | 클러스터 모드 |
75
+ | `bun` | Bun | Bun 런타임 |
76
+ | `deno_deploy` | Deno | Deno Deploy |
77
+
78
+ ### 정적/기타
79
+
80
+ | Preset | 플랫폼 | 설명 |
81
+ |--------|--------|------|
82
+ | `static` | 범용 | 정적 사이트 생성 |
83
+ | `github_pages` | GitHub | GitHub Pages |
84
+ | `render_com` | Render | Render.com |
85
+
86
+ ## 출력 구조
87
+
88
+ 빌드 후 `.output/` 디렉토리에 생성되는 파일:
89
+
90
+ ```
91
+ .output/
92
+ ├── server/
93
+ │ └── index.mjs # 서버 엔트리포인트
94
+ ├── public/
95
+ │ └── ... # 정적 파일
96
+ └── nitro.json # Nitro 설정
97
+ ```
98
+
99
+ ## 런타임 설정
100
+
101
+ ### Node.js 호환성
102
+
103
+ ```typescript
104
+ // nitro.config.ts
105
+ export default defineNitroConfig({
106
+ preset: 'cloudflare_pages',
107
+ cloudflare: {
108
+ nodeCompat: true, // Node.js API 호환성
109
+ },
110
+ })
111
+ ```
112
+
113
+ ### 외부 패키지 처리
114
+
115
+ ```typescript
116
+ // nitro.config.ts
117
+ export default defineNitroConfig({
118
+ // 번들에서 제외할 패키지
119
+ externals: ['pg', 'mysql2'],
120
+
121
+ // 번들에 포함할 패키지
122
+ inlineDependencies: ['my-esm-package'],
123
+ })
124
+ ```
125
+
126
+ ## 라우트 규칙
127
+
128
+ ```typescript
129
+ // nitro.config.ts
130
+ export default defineNitroConfig({
131
+ routeRules: {
132
+ // 정적 페이지 캐싱
133
+ '/': { prerender: true },
134
+
135
+ // ISR (Incremental Static Regeneration)
136
+ '/products/**': {
137
+ isr: {
138
+ expiration: 60, // 60초
139
+ },
140
+ },
141
+
142
+ // API 라우트 설정
143
+ '/api/**': {
144
+ cors: true,
145
+ headers: {
146
+ 'Access-Control-Allow-Origin': '*',
147
+ },
148
+ },
149
+ },
150
+ })
151
+ ```
152
+
153
+ ## 환경변수 관리
154
+
155
+ ### .env 파일
156
+
157
+ ```bash
158
+ # .env.production
159
+ DATABASE_URL=postgresql://...
160
+ API_SECRET=your-secret-key
161
+ ```
162
+
163
+ ### 런타임에서 사용
164
+
165
+ ```typescript
166
+ // server/api/example.ts
167
+ import { defineHandler } from 'nitro/h3'
168
+
169
+ export default defineHandler(() => {
170
+ const dbUrl = process.env.DATABASE_URL
171
+ // ...
172
+ })
173
+ ```
174
+
175
+ ## 빌드 명령어
176
+
177
+ ```bash
178
+ # 개발 서버
179
+ yarn dev
180
+
181
+ # 프로덕션 빌드
182
+ yarn build
183
+
184
+ # 빌드 결과 미리보기
185
+ yarn preview
186
+
187
+ # 특정 preset으로 빌드
188
+ NITRO_PRESET=vercel yarn build
189
+ ```
190
+
191
+ ## 디버깅
192
+
193
+ ### 빌드 로그 확인
194
+
195
+ ```bash
196
+ # 상세 로그 출력
197
+ DEBUG=nitro:* yarn build
198
+ ```
199
+
200
+ ### 출력 검사
201
+
202
+ ```bash
203
+ # 빌드 후 출력 확인
204
+ ls -la .output/server/
205
+ cat .output/nitro.json
206
+ ```
207
+
208
+ ## 참고 자료
209
+
210
+ - [Nitro 공식 문서](https://nitro.build)
211
+ - [Nitro Preset 목록](https://nitro.build/deploy)