@kood/claude-code 0.1.2 → 0.1.4
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 +129 -5
- package/package.json +2 -2
- package/templates/hono/CLAUDE.md +20 -2
- package/templates/hono/docs/architecture/architecture.md +909 -0
- package/templates/hono/docs/commands/git.md +275 -0
- package/templates/hono/docs/deployment/cloudflare.md +527 -190
- package/templates/hono/docs/deployment/docker.md +514 -0
- package/templates/hono/docs/deployment/index.md +179 -214
- package/templates/hono/docs/deployment/railway.md +416 -0
- package/templates/hono/docs/deployment/vercel.md +567 -0
- package/templates/hono/docs/library/ai-sdk/index.md +427 -0
- package/templates/hono/docs/library/ai-sdk/openrouter.md +479 -0
- package/templates/hono/docs/library/ai-sdk/providers.md +468 -0
- package/templates/hono/docs/library/ai-sdk/streaming.md +447 -0
- package/templates/hono/docs/library/ai-sdk/structured-output.md +493 -0
- package/templates/hono/docs/library/ai-sdk/tools.md +513 -0
- package/templates/hono/docs/library/hono/env-setup.md +458 -0
- package/templates/hono/docs/library/hono/index.md +1 -3
- package/templates/hono/docs/library/pino/index.md +437 -0
- package/templates/hono/docs/library/prisma/cloudflare-d1.md +503 -0
- package/templates/hono/docs/library/prisma/config.md +362 -0
- package/templates/hono/docs/library/prisma/index.md +86 -13
- package/templates/hono/docs/skills/gemini-review/SKILL.md +116 -116
- package/templates/hono/docs/skills/gemini-review/references/checklists.md +125 -125
- package/templates/hono/docs/skills/gemini-review/references/prompt-templates.md +191 -191
- package/templates/npx/CLAUDE.md +309 -0
- package/templates/npx/docs/commands/git.md +275 -0
- package/templates/npx/docs/library/commander/index.md +164 -0
- package/templates/npx/docs/library/fs-extra/index.md +171 -0
- package/templates/npx/docs/library/prompts/index.md +253 -0
- package/templates/npx/docs/mcp/index.md +60 -0
- package/templates/npx/docs/skills/gemini-review/SKILL.md +220 -0
- package/templates/npx/docs/skills/gemini-review/references/checklists.md +134 -0
- package/templates/npx/docs/skills/gemini-review/references/prompt-templates.md +301 -0
- package/templates/tanstack-start/CLAUDE.md +43 -5
- package/templates/tanstack-start/docs/architecture/architecture.md +134 -4
- package/templates/tanstack-start/docs/commands/git.md +275 -0
- package/templates/tanstack-start/docs/deployment/cloudflare.md +223 -50
- package/templates/tanstack-start/docs/deployment/index.md +320 -30
- package/templates/tanstack-start/docs/deployment/nitro.md +195 -14
- package/templates/tanstack-start/docs/deployment/railway.md +302 -150
- package/templates/tanstack-start/docs/deployment/vercel.md +345 -75
- package/templates/tanstack-start/docs/guides/best-practices.md +203 -1
- package/templates/tanstack-start/docs/guides/env-setup.md +450 -0
- package/templates/tanstack-start/docs/library/ai-sdk/hooks.md +472 -0
- package/templates/tanstack-start/docs/library/ai-sdk/index.md +264 -0
- package/templates/tanstack-start/docs/library/ai-sdk/openrouter.md +371 -0
- package/templates/tanstack-start/docs/library/ai-sdk/providers.md +403 -0
- package/templates/tanstack-start/docs/library/ai-sdk/streaming.md +320 -0
- package/templates/tanstack-start/docs/library/ai-sdk/structured-output.md +454 -0
- package/templates/tanstack-start/docs/library/ai-sdk/tools.md +473 -0
- package/templates/tanstack-start/docs/library/pino/index.md +320 -0
- package/templates/tanstack-start/docs/library/prisma/cloudflare-d1.md +404 -0
- package/templates/tanstack-start/docs/library/prisma/config.md +377 -0
- package/templates/tanstack-start/docs/library/prisma/index.md +3 -5
- package/templates/tanstack-start/docs/library/prisma/schema.md +123 -25
- package/templates/tanstack-start/docs/library/prisma/setup.md +0 -7
- package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +80 -2
- package/templates/tanstack-start/docs/skills/gemini-review/SKILL.md +116 -116
- package/templates/tanstack-start/docs/skills/gemini-review/references/checklists.md +138 -144
- package/templates/tanstack-start/docs/skills/gemini-review/references/prompt-templates.md +186 -187
- package/templates/hono/docs/git/index.md +0 -180
- package/templates/tanstack-start/docs/git/index.md +0 -203
|
@@ -1,291 +1,256 @@
|
|
|
1
|
-
# 배포 가이드
|
|
1
|
+
# Nitro v3 배포 가이드
|
|
2
2
|
|
|
3
|
-
> Hono
|
|
3
|
+
> **Version**: Nitro 3.x | Hono 프레임워크 배포
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 🚀 Quick Reference (복사용)
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|--------|------|
|
|
13
|
-
| **Cloudflare Workers** | 엣지 컴퓨팅, 글로벌 배포 |
|
|
14
|
-
| **Deno Deploy** | TypeScript 네이티브 |
|
|
15
|
-
| **Bun** | 빠른 실행 속도 |
|
|
16
|
-
| **Node.js** | 전통적인 서버 환경 |
|
|
17
|
-
| **AWS Lambda** | 서버리스 |
|
|
18
|
-
| **Vercel** | 프론트엔드 통합 |
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Cloudflare Workers
|
|
23
|
-
|
|
24
|
-
### 프로젝트 생성
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
npm create hono@latest my-app
|
|
28
|
-
# cloudflare-workers 템플릿 선택
|
|
29
|
-
```
|
|
9
|
+
```typescript
|
|
10
|
+
// nitro.config.ts
|
|
11
|
+
import { defineNitroConfig } from "nitro/config";
|
|
30
12
|
|
|
31
|
-
|
|
13
|
+
export default defineNitroConfig({
|
|
14
|
+
// 플랫폼별 preset 선택
|
|
15
|
+
preset: "node" | "cloudflare_module" | "cloudflare_pages" | "vercel",
|
|
32
16
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
main = "src/index.ts"
|
|
36
|
-
compatibility_date = "2024-01-01"
|
|
17
|
+
// 기본 설정
|
|
18
|
+
compatibilityDate: "2024-09-19",
|
|
37
19
|
|
|
38
|
-
|
|
39
|
-
|
|
20
|
+
// Hono 앱 엔트리포인트
|
|
21
|
+
renderer: "hono",
|
|
22
|
+
});
|
|
40
23
|
```
|
|
41
24
|
|
|
42
|
-
###
|
|
25
|
+
### CLI 명령어
|
|
43
26
|
|
|
44
27
|
```bash
|
|
45
|
-
#
|
|
46
|
-
|
|
28
|
+
# 빌드
|
|
29
|
+
npx nitro build
|
|
47
30
|
|
|
48
|
-
#
|
|
49
|
-
|
|
50
|
-
# 또는
|
|
51
|
-
npx wrangler deploy
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### 환경 변수
|
|
31
|
+
# 개발 서버
|
|
32
|
+
npx nitro dev
|
|
55
33
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
npx wrangler secret put DATABASE_URL
|
|
59
|
-
npx wrangler secret put JWT_SECRET
|
|
34
|
+
# 프리뷰 (빌드 후 로컬 실행)
|
|
35
|
+
npx nitro preview
|
|
60
36
|
```
|
|
61
37
|
|
|
62
|
-
|
|
38
|
+
---
|
|
63
39
|
|
|
64
|
-
|
|
65
|
-
DATABASE_URL=postgresql://...
|
|
66
|
-
JWT_SECRET=your-secret
|
|
67
|
-
```
|
|
40
|
+
## 문서 구조
|
|
68
41
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
push:
|
|
76
|
-
branches:
|
|
77
|
-
- main
|
|
78
|
-
|
|
79
|
-
jobs:
|
|
80
|
-
deploy:
|
|
81
|
-
runs-on: ubuntu-latest
|
|
82
|
-
steps:
|
|
83
|
-
- uses: actions/checkout@v4
|
|
84
|
-
- name: Deploy
|
|
85
|
-
uses: cloudflare/wrangler-action@v3
|
|
86
|
-
with:
|
|
87
|
-
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
88
|
-
```
|
|
42
|
+
| 플랫폼 | 문서 | 특징 |
|
|
43
|
+
|--------|------|------|
|
|
44
|
+
| [Docker](./docker.md) | 컨테이너 배포 | 유연한 인프라, CI/CD 통합 |
|
|
45
|
+
| [Railway](./railway.md) | PaaS 배포 | 간편한 배포, 자동 스케일링 |
|
|
46
|
+
| [Vercel](./vercel.md) | 서버리스 배포 | Edge Functions, ISR 지원 |
|
|
47
|
+
| [Cloudflare](./cloudflare.md) | Edge 배포 | 글로벌 분산, D1/KV 통합 |
|
|
89
48
|
|
|
90
49
|
---
|
|
91
50
|
|
|
92
|
-
##
|
|
51
|
+
## Nitro 설치 및 설정
|
|
93
52
|
|
|
94
|
-
###
|
|
53
|
+
### 1. 의존성 설치
|
|
95
54
|
|
|
96
55
|
```bash
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### 실행
|
|
56
|
+
# npm
|
|
57
|
+
npm install nitro@3
|
|
102
58
|
|
|
103
|
-
|
|
104
|
-
|
|
59
|
+
# yarn
|
|
60
|
+
yarn add nitro@3
|
|
105
61
|
```
|
|
106
62
|
|
|
107
|
-
###
|
|
63
|
+
### 2. 기본 설정 파일
|
|
108
64
|
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
65
|
+
```typescript
|
|
66
|
+
// nitro.config.ts
|
|
67
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
68
|
+
// Nitro v3 기본 설정
|
|
69
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
70
|
+
import { defineNitroConfig } from "nitro/config";
|
|
71
|
+
|
|
72
|
+
export default defineNitroConfig({
|
|
73
|
+
// 호환성 날짜 (필수)
|
|
74
|
+
compatibilityDate: "2024-09-19",
|
|
75
|
+
|
|
76
|
+
// 소스 디렉토리
|
|
77
|
+
srcDir: "src",
|
|
78
|
+
|
|
79
|
+
// 빌드 출력 디렉토리
|
|
80
|
+
output: {
|
|
81
|
+
dir: ".output",
|
|
82
|
+
},
|
|
83
|
+
});
|
|
116
84
|
```
|
|
117
85
|
|
|
118
|
-
###
|
|
86
|
+
### 3. Hono 앱 엔트리포인트
|
|
119
87
|
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
|
|
88
|
+
```typescript
|
|
89
|
+
// src/server.ts
|
|
90
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
91
|
+
// Hono 앱 메인 엔트리포인트
|
|
92
|
+
// Nitro에서 이 파일을 서버로 사용합니다
|
|
93
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
94
|
+
import { Hono } from "hono";
|
|
95
|
+
import { logger } from "hono/logger";
|
|
96
|
+
import { cors } from "hono/cors";
|
|
97
|
+
|
|
98
|
+
// Hono 앱 생성
|
|
99
|
+
const app = new Hono();
|
|
100
|
+
|
|
101
|
+
// 미들웨어
|
|
102
|
+
app.use("*", logger());
|
|
103
|
+
app.use("*", cors());
|
|
104
|
+
|
|
105
|
+
// 라우트
|
|
106
|
+
app.get("/", (c) => {
|
|
107
|
+
return c.json({ message: "Hello from Hono + Nitro!" });
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
app.get("/health", (c) => {
|
|
111
|
+
return c.json({ status: "ok", timestamp: new Date().toISOString() });
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// Nitro export
|
|
115
|
+
export default app;
|
|
116
|
+
```
|
|
123
117
|
|
|
124
|
-
|
|
125
|
-
COPY package.json bun.lockb ./
|
|
126
|
-
RUN bun install --frozen-lockfile
|
|
118
|
+
---
|
|
127
119
|
|
|
128
|
-
|
|
129
|
-
COPY . .
|
|
120
|
+
## 프로젝트 구조
|
|
130
121
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
122
|
+
```
|
|
123
|
+
프로젝트/
|
|
124
|
+
├── nitro.config.ts # Nitro 설정
|
|
125
|
+
├── src/
|
|
126
|
+
│ ├── server.ts # Hono 앱 엔트리포인트
|
|
127
|
+
│ ├── routes/ # API 라우트
|
|
128
|
+
│ │ ├── users.ts
|
|
129
|
+
│ │ └── posts.ts
|
|
130
|
+
│ ├── middleware/ # 커스텀 미들웨어
|
|
131
|
+
│ └── lib/ # 유틸리티
|
|
132
|
+
├── .output/ # 빌드 결과물 (자동 생성)
|
|
133
|
+
├── package.json
|
|
134
|
+
└── tsconfig.json
|
|
134
135
|
```
|
|
135
136
|
|
|
136
137
|
---
|
|
137
138
|
|
|
138
|
-
##
|
|
139
|
+
## 환경 변수 설정
|
|
139
140
|
|
|
140
|
-
###
|
|
141
|
+
### .env 파일
|
|
141
142
|
|
|
142
|
-
```
|
|
143
|
-
|
|
143
|
+
```env
|
|
144
|
+
# .env
|
|
145
|
+
DATABASE_URL=postgresql://localhost:5432/mydb
|
|
146
|
+
API_SECRET=your-secret-key
|
|
147
|
+
NODE_ENV=development
|
|
144
148
|
```
|
|
145
149
|
|
|
146
|
-
###
|
|
150
|
+
### Nitro에서 환경 변수 접근
|
|
147
151
|
|
|
148
152
|
```typescript
|
|
149
|
-
|
|
150
|
-
import
|
|
153
|
+
// src/server.ts
|
|
154
|
+
import { Hono } from "hono";
|
|
155
|
+
|
|
156
|
+
const app = new Hono();
|
|
157
|
+
|
|
158
|
+
app.get("/config", (c) => {
|
|
159
|
+
// process.env로 접근
|
|
160
|
+
const dbUrl = process.env.DATABASE_URL;
|
|
161
|
+
const nodeEnv = process.env.NODE_ENV;
|
|
151
162
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
})
|
|
163
|
+
return c.json({
|
|
164
|
+
environment: nodeEnv,
|
|
165
|
+
hasDbConnection: !!dbUrl
|
|
166
|
+
});
|
|
167
|
+
});
|
|
156
168
|
|
|
157
|
-
|
|
169
|
+
export default app;
|
|
158
170
|
```
|
|
159
171
|
|
|
160
|
-
###
|
|
172
|
+
### 런타임 설정 (nitro.config.ts)
|
|
161
173
|
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
174
|
+
```typescript
|
|
175
|
+
// nitro.config.ts
|
|
176
|
+
import { defineNitroConfig } from "nitro/config";
|
|
177
|
+
|
|
178
|
+
export default defineNitroConfig({
|
|
179
|
+
compatibilityDate: "2024-09-19",
|
|
180
|
+
|
|
181
|
+
// 런타임 환경 변수
|
|
182
|
+
runtimeConfig: {
|
|
183
|
+
// 서버 전용 (노출 안됨)
|
|
184
|
+
apiSecret: process.env.API_SECRET,
|
|
185
|
+
|
|
186
|
+
// 공개 설정
|
|
187
|
+
public: {
|
|
188
|
+
apiBase: process.env.API_BASE_URL || "/api",
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
});
|
|
170
192
|
```
|
|
171
193
|
|
|
172
194
|
---
|
|
173
195
|
|
|
174
|
-
##
|
|
196
|
+
## 빌드 및 실행
|
|
175
197
|
|
|
176
|
-
###
|
|
198
|
+
### 개발 모드
|
|
177
199
|
|
|
178
200
|
```bash
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
```
|
|
201
|
+
# 개발 서버 실행 (Hot Reload)
|
|
202
|
+
npx nitro dev
|
|
182
203
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
```json
|
|
186
|
-
{
|
|
187
|
-
"tasks": {
|
|
188
|
-
"dev": "deno run --allow-net --allow-env --watch src/index.ts",
|
|
189
|
-
"start": "deno run --allow-net --allow-env src/index.ts"
|
|
190
|
-
}
|
|
191
|
-
}
|
|
204
|
+
# 포트 지정
|
|
205
|
+
npx nitro dev --port 3001
|
|
192
206
|
```
|
|
193
207
|
|
|
194
|
-
###
|
|
208
|
+
### 프로덕션 빌드
|
|
195
209
|
|
|
196
210
|
```bash
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
---
|
|
211
|
+
# 빌드
|
|
212
|
+
npx nitro build
|
|
201
213
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
### vercel.json
|
|
205
|
-
|
|
206
|
-
```json
|
|
207
|
-
{
|
|
208
|
-
"builds": [
|
|
209
|
-
{
|
|
210
|
-
"src": "src/index.ts",
|
|
211
|
-
"use": "@vercel/node"
|
|
212
|
-
}
|
|
213
|
-
],
|
|
214
|
-
"routes": [
|
|
215
|
-
{
|
|
216
|
-
"src": "/(.*)",
|
|
217
|
-
"dest": "src/index.ts"
|
|
218
|
-
}
|
|
219
|
-
]
|
|
220
|
-
}
|
|
214
|
+
# 빌드 결과물 실행
|
|
215
|
+
node .output/server/index.mjs
|
|
221
216
|
```
|
|
222
217
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
## 환경별 설정
|
|
218
|
+
### 로컬 프리뷰
|
|
226
219
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
// types/env.d.ts
|
|
231
|
-
type Bindings = {
|
|
232
|
-
NODE_ENV: 'development' | 'production' | 'test'
|
|
233
|
-
DATABASE_URL: string
|
|
234
|
-
JWT_SECRET: string
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
// app.ts
|
|
238
|
-
const app = new Hono<{ Bindings: Bindings }>()
|
|
239
|
-
|
|
240
|
-
app.get('/', (c) => {
|
|
241
|
-
const env = c.env.NODE_ENV
|
|
242
|
-
return c.json({ env })
|
|
243
|
-
})
|
|
220
|
+
```bash
|
|
221
|
+
# 빌드 후 프로덕션 모드로 로컬 실행
|
|
222
|
+
npx nitro preview
|
|
244
223
|
```
|
|
245
224
|
|
|
246
|
-
|
|
225
|
+
---
|
|
247
226
|
|
|
248
|
-
|
|
249
|
-
const app = new Hono()
|
|
227
|
+
## Preset 선택 가이드
|
|
250
228
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
```
|
|
229
|
+
| Preset | 용도 | 장점 |
|
|
230
|
+
|--------|------|------|
|
|
231
|
+
| `node` | Node.js 서버 | 범용, Docker 호환 |
|
|
232
|
+
| `cloudflare_module` | Cloudflare Workers | Edge 배포, 낮은 지연시간 |
|
|
233
|
+
| `cloudflare_pages` | Cloudflare Pages | 정적 + 서버리스 |
|
|
234
|
+
| `vercel` | Vercel Functions | 간편한 배포, ISR |
|
|
235
|
+
| `netlify` | Netlify Functions | JAMstack 친화적 |
|
|
236
|
+
| `deno` | Deno Deploy | Deno 런타임 |
|
|
237
|
+
| `bun` | Bun 런타임 | 빠른 실행 속도 |
|
|
261
238
|
|
|
262
239
|
---
|
|
263
240
|
|
|
264
|
-
##
|
|
241
|
+
## 다음 단계
|
|
265
242
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
})
|
|
273
|
-
|
|
274
|
-
app.get('/ready', async (c) => {
|
|
275
|
-
try {
|
|
276
|
-
// DB 연결 확인
|
|
277
|
-
await prisma.$queryRaw`SELECT 1`
|
|
278
|
-
return c.json({ status: 'ready' })
|
|
279
|
-
} catch {
|
|
280
|
-
return c.json({ status: 'not ready' }, 503)
|
|
281
|
-
}
|
|
282
|
-
})
|
|
283
|
-
```
|
|
243
|
+
플랫폼별 상세 배포 가이드:
|
|
244
|
+
|
|
245
|
+
1. **[Docker 배포](./docker.md)** - 컨테이너 기반 배포
|
|
246
|
+
2. **[Railway 배포](./railway.md)** - PaaS 간편 배포
|
|
247
|
+
3. **[Vercel 배포](./vercel.md)** - 서버리스 배포
|
|
248
|
+
4. **[Cloudflare 배포](./cloudflare.md)** - Edge 배포
|
|
284
249
|
|
|
285
250
|
---
|
|
286
251
|
|
|
287
|
-
##
|
|
252
|
+
## 참고 자료
|
|
288
253
|
|
|
289
|
-
- [
|
|
290
|
-
- [
|
|
291
|
-
- [
|
|
254
|
+
- [Nitro 공식 문서](https://nitro.build)
|
|
255
|
+
- [Hono 공식 문서](https://hono.dev)
|
|
256
|
+
- [Nitro GitHub](https://github.com/nitrojs/nitro)
|