@kood/claude-code 0.6.6 → 0.7.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 (170) hide show
  1. package/dist/index.js +7 -1
  2. package/package.json +1 -1
  3. package/templates/.claude/agents/analyst.md +5 -0
  4. package/templates/.claude/agents/architect.md +5 -0
  5. package/templates/.claude/agents/build-fixer.md +1 -0
  6. package/templates/.claude/agents/code-reviewer.md +1 -0
  7. package/templates/.claude/agents/critic.md +4 -0
  8. package/templates/.claude/agents/deep-executor.md +1 -0
  9. package/templates/.claude/agents/dependency-manager.md +2 -0
  10. package/templates/.claude/agents/deployment-validator.md +2 -0
  11. package/templates/.claude/agents/designer.md +2 -0
  12. package/templates/.claude/agents/document-writer.md +3 -0
  13. package/templates/.claude/agents/explore.md +1 -0
  14. package/templates/.claude/agents/git-operator.md +2 -0
  15. package/templates/.claude/agents/implementation-executor.md +2 -0
  16. package/templates/.claude/agents/ko-to-en-translator.md +3 -0
  17. package/templates/.claude/agents/lint-fixer.md +2 -0
  18. package/templates/.claude/agents/planner.md +3 -0
  19. package/templates/.claude/agents/pm.md +349 -0
  20. package/templates/.claude/agents/qa-tester.md +1 -0
  21. package/templates/.claude/agents/refactor-advisor.md +4 -0
  22. package/templates/.claude/agents/researcher.md +9 -1
  23. package/templates/.claude/agents/scientist.md +1 -0
  24. package/templates/.claude/agents/security-reviewer.md +1 -0
  25. package/templates/.claude/agents/tdd-guide.md +1 -0
  26. package/templates/.claude/agents/vision.md +1 -0
  27. package/templates/.claude/instructions/agent-patterns/agent-teams-usage.md +376 -0
  28. package/templates/.claude/instructions/sourcing/reliable-search.md +49 -2
  29. package/templates/.claude/scripts/agent-teams/check-availability.sh +238 -0
  30. package/templates/.claude/scripts/agent-teams/setup-tmux.sh +125 -0
  31. package/templates/.claude/skills/agent-teams-setup/SKILL.md +460 -0
  32. package/templates/.claude/skills/brainstorm/SKILL.md +1 -0
  33. package/templates/.claude/skills/bug-fix/SKILL.md +1 -0
  34. package/templates/.claude/skills/crawler/SKILL.md +2 -0
  35. package/templates/.claude/skills/docs-creator/SKILL.md +1 -0
  36. package/templates/.claude/skills/docs-fetch/SKILL.md +6 -4
  37. package/templates/.claude/skills/docs-refactor/SKILL.md +1 -0
  38. package/templates/.claude/skills/elon-musk/SKILL.md +1 -0
  39. package/templates/.claude/skills/execute/SKILL.md +1 -0
  40. package/templates/.claude/skills/feedback/SKILL.md +1 -0
  41. package/templates/.claude/skills/figma-to-code/SKILL.md +1 -0
  42. package/templates/.claude/skills/genius-thinking/SKILL.md +1 -0
  43. package/templates/.claude/skills/global-uiux-design/SKILL.md +1 -0
  44. package/templates/.claude/skills/korea-uiux-design/SKILL.md +1 -0
  45. package/templates/.claude/skills/nextjs-react-best-practices/SKILL.md +1 -0
  46. package/templates/.claude/skills/plan/SKILL.md +1 -0
  47. package/templates/.claude/skills/prd/SKILL.md +1 -0
  48. package/templates/.claude/skills/project-optimizer/AGENTS.md +275 -0
  49. package/templates/.claude/skills/project-optimizer/SKILL.md +375 -0
  50. package/templates/.claude/skills/project-optimizer/rules/arch-config-centralize.md +66 -0
  51. package/templates/.claude/skills/project-optimizer/rules/arch-hot-path.md +35 -0
  52. package/templates/.claude/skills/project-optimizer/rules/arch-interface-segregation.md +51 -0
  53. package/templates/.claude/skills/project-optimizer/rules/arch-module-boundary.md +42 -0
  54. package/templates/.claude/skills/project-optimizer/rules/build-cache.md +57 -0
  55. package/templates/.claude/skills/project-optimizer/rules/build-code-split.md +56 -0
  56. package/templates/.claude/skills/project-optimizer/rules/build-incremental.md +65 -0
  57. package/templates/.claude/skills/project-optimizer/rules/build-minify.md +61 -0
  58. package/templates/.claude/skills/project-optimizer/rules/build-tree-shake.md +60 -0
  59. package/templates/.claude/skills/project-optimizer/rules/code-complexity.md +65 -0
  60. package/templates/.claude/skills/project-optimizer/rules/code-dead-elimination.md +32 -0
  61. package/templates/.claude/skills/project-optimizer/rules/code-duplication.md +54 -0
  62. package/templates/.claude/skills/project-optimizer/rules/code-error-handling.md +75 -0
  63. package/templates/.claude/skills/project-optimizer/rules/code-naming.md +52 -0
  64. package/templates/.claude/skills/project-optimizer/rules/concurrency-defer-await.md +54 -0
  65. package/templates/.claude/skills/project-optimizer/rules/concurrency-parallel.md +90 -0
  66. package/templates/.claude/skills/project-optimizer/rules/concurrency-pipeline.md +68 -0
  67. package/templates/.claude/skills/project-optimizer/rules/concurrency-pool.md +68 -0
  68. package/templates/.claude/skills/project-optimizer/rules/deps-lightweight-alt.md +37 -0
  69. package/templates/.claude/skills/project-optimizer/rules/deps-peer-align.md +44 -0
  70. package/templates/.claude/skills/project-optimizer/rules/deps-security-audit.md +45 -0
  71. package/templates/.claude/skills/project-optimizer/rules/deps-unused-removal.md +25 -0
  72. package/templates/.claude/skills/project-optimizer/rules/deps-version-pin.md +40 -0
  73. package/templates/.claude/skills/project-optimizer/rules/dx-ci-speed.md +47 -0
  74. package/templates/.claude/skills/project-optimizer/rules/dx-dev-server.md +35 -0
  75. package/templates/.claude/skills/project-optimizer/rules/dx-lint-config.md +36 -0
  76. package/templates/.claude/skills/project-optimizer/rules/dx-test-coverage.md +34 -0
  77. package/templates/.claude/skills/project-optimizer/rules/dx-type-safety.md +49 -0
  78. package/templates/.claude/skills/project-optimizer/rules/io-batch-queries.md +67 -0
  79. package/templates/.claude/skills/project-optimizer/rules/io-cache-layer.md +67 -0
  80. package/templates/.claude/skills/project-optimizer/rules/io-connection-reuse.md +67 -0
  81. package/templates/.claude/skills/project-optimizer/rules/io-serialize-minimal.md +61 -0
  82. package/templates/.claude/skills/project-optimizer/rules/io-stream.md +75 -0
  83. package/templates/.claude/skills/project-optimizer/rules/memory-bounded-cache.md +65 -0
  84. package/templates/.claude/skills/project-optimizer/rules/memory-large-data.md +64 -0
  85. package/templates/.claude/skills/project-optimizer/rules/memory-lazy-init.md +78 -0
  86. package/templates/.claude/skills/project-optimizer/rules/memory-leak-prevention.md +79 -0
  87. package/templates/.claude/skills/project-optimizer/rules/memory-pool-reuse.md +70 -0
  88. package/templates/.claude/skills/ralph/SKILL.md +1 -0
  89. package/templates/.claude/skills/refactor/SKILL.md +1 -0
  90. package/templates/.claude/skills/research/SKILL.md +1 -0
  91. package/templates/.claude/skills/sql-optimizer/SKILL.md +438 -0
  92. package/templates/.claude/skills/sql-optimizer/orm-patterns.md +218 -0
  93. package/templates/.claude/skills/startup-validator/SKILL.md +1 -0
  94. package/templates/.claude/skills/tanstack-start-react-best-practices/AGENTS.md +53 -14
  95. package/templates/.claude/skills/tanstack-start-react-best-practices/SKILL.md +94 -27
  96. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-defer-third-party.md +42 -19
  97. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-optimistic-updates.md +109 -0
  98. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-suspense-query.md +74 -0
  99. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-use-hook.md +81 -0
  100. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-react-compiler.md +81 -0
  101. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-beforeload-auth.md +121 -0
  102. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-file-conventions.md +104 -0
  103. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-link-navigation.md +119 -0
  104. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-nested-layouts.md +155 -0
  105. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-path-params.md +89 -0
  106. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-pending-component.md +110 -0
  107. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-preload-strategy.md +91 -0
  108. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-router-context.md +120 -0
  109. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-search-params.md +114 -0
  110. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-deferred-data.md +1 -1
  111. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-error-boundaries.md +79 -0
  112. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-middleware.md +85 -0
  113. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-serialization.md +56 -21
  114. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-streaming.md +84 -0
  115. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-validator.md +71 -0
  116. package/templates/.claude/skills/tauri-react-best-practices/AGENTS.md +527 -0
  117. package/templates/.claude/skills/tauri-react-best-practices/SKILL.md +571 -0
  118. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-barrel-imports.md +140 -0
  119. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-cargo-profile.md +96 -0
  120. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-frontend-treeshake.md +242 -0
  121. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-lazy-components.md +255 -0
  122. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-remove-unused-commands.md +160 -0
  123. package/templates/.claude/skills/tauri-react-best-practices/rules/deploy-ci-pipeline.md +269 -0
  124. package/templates/.claude/skills/tauri-react-best-practices/rules/deploy-signing.md +207 -0
  125. package/templates/.claude/skills/tauri-react-best-practices/rules/deploy-updater.md +226 -0
  126. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-async-commands.md +172 -0
  127. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-batch-commands.md +133 -0
  128. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-binary-response.md +198 -0
  129. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-channel-streaming.md +186 -0
  130. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-error-handling.md +250 -0
  131. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-type-safe.md +227 -0
  132. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-derived-state.md +231 -0
  133. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-functional-setstate.md +191 -0
  134. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-index-maps.md +276 -0
  135. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-lazy-state-init.md +196 -0
  136. package/templates/.claude/skills/tauri-react-best-practices/rules/plugin-lifecycle.md +265 -0
  137. package/templates/.claude/skills/tauri-react-best-practices/rules/plugin-mobile-compat.md +199 -0
  138. package/templates/.claude/skills/tauri-react-best-practices/rules/plugin-permission-scope.md +193 -0
  139. package/templates/.claude/skills/tauri-react-best-practices/rules/react-error-boundary.md +239 -0
  140. package/templates/.claude/skills/tauri-react-best-practices/rules/react-event-listener.md +151 -0
  141. package/templates/.claude/skills/tauri-react-best-practices/rules/react-file-src.md +155 -0
  142. package/templates/.claude/skills/tauri-react-best-practices/rules/react-invoke-hook.md +139 -0
  143. package/templates/.claude/skills/tauri-react-best-practices/rules/react-optimistic-update.md +211 -0
  144. package/templates/.claude/skills/tauri-react-best-practices/rules/security-capability-split.md +205 -0
  145. package/templates/.claude/skills/tauri-react-best-practices/rules/security-csp.md +207 -0
  146. package/templates/.claude/skills/tauri-react-best-practices/rules/security-least-privilege.md +106 -0
  147. package/templates/.claude/skills/tauri-react-best-practices/rules/security-no-wildcard.md +253 -0
  148. package/templates/.claude/skills/tauri-react-best-practices/rules/security-scope-paths.md +160 -0
  149. package/templates/.claude/skills/tauri-react-best-practices/rules/state-async-mutex.md +270 -0
  150. package/templates/.claude/skills/tauri-react-best-practices/rules/state-mutex-pattern.md +265 -0
  151. package/templates/.claude/skills/tauri-react-best-practices/rules/state-react-sync.md +375 -0
  152. package/templates/.claude/skills/tauri-react-best-practices/rules/state-single-container.md +275 -0
  153. package/templates/tanstack-start/docs/architecture.md +238 -167
  154. package/templates/tanstack-start/docs/library/tanstack-router/error-handling.md +777 -38
  155. package/templates/tanstack-start/docs/library/tanstack-router/hooks.md +549 -37
  156. package/templates/tanstack-start/docs/library/tanstack-router/index.md +895 -111
  157. package/templates/tanstack-start/docs/library/tanstack-router/navigation.md +641 -43
  158. package/templates/tanstack-start/docs/library/tanstack-router/route-context.md +889 -38
  159. package/templates/tanstack-start/docs/library/tanstack-router/search-params.md +891 -29
  160. package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +972 -36
  161. package/templates/tanstack-start/docs/library/tanstack-start/index.md +1525 -881
  162. package/templates/tanstack-start/docs/library/tanstack-start/middleware.md +1099 -20
  163. package/templates/tanstack-start/docs/library/tanstack-start/routing.md +796 -30
  164. package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +953 -35
  165. package/templates/tanstack-start/docs/library/tanstack-start/setup.md +371 -15
  166. package/templates/tauri/CLAUDE.md +189 -0
  167. package/templates/tauri/docs/guides/distribution.md +261 -0
  168. package/templates/tauri/docs/guides/getting-started.md +302 -0
  169. package/templates/tauri/docs/guides/mobile.md +288 -0
  170. package/templates/tauri/docs/library/tauri/index.md +510 -0
@@ -0,0 +1,261 @@
1
+ # Distribution
2
+
3
+ > Tauri v2 빌드, 코드 서명, 배포 가이드
4
+
5
+ ---
6
+
7
+ ## 빌드 명령어
8
+
9
+ ### 데스크톱
10
+
11
+ ```bash
12
+ # 기본 빌드 (현재 플랫폼)
13
+ npx tauri build
14
+
15
+ # 특정 번들 포맷
16
+ npx tauri build --bundles msi # Windows MSI
17
+ npx tauri build --bundles nsis # Windows NSIS
18
+ npx tauri build --bundles dmg # macOS DMG
19
+ npx tauri build --bundles app # macOS App Bundle
20
+ npx tauri build --bundles appimage # Linux AppImage
21
+ npx tauri build --bundles deb # Linux Debian
22
+ npx tauri build --bundles rpm # Linux RPM
23
+
24
+ # macOS Universal (ARM + Intel)
25
+ npx tauri build --bundles app --target universal-apple-darwin
26
+
27
+ # 디버그 빌드
28
+ npx tauri build --debug
29
+
30
+ # 빌드만 (번들링 스킵)
31
+ npx tauri build --no-bundle
32
+ ```
33
+
34
+ ### 모바일
35
+
36
+ ```bash
37
+ # Android
38
+ npx tauri android build -- --aab # AAB (Play Store)
39
+ npx tauri android build -- --apk # APK (사이드로딩)
40
+ npx tauri android build -- --aab --target aarch64 # 특정 아키텍처
41
+
42
+ # iOS
43
+ npx tauri ios build # 일반 IPA
44
+ npx tauri ios build --export-method app-store-connect # App Store
45
+ ```
46
+
47
+ ---
48
+
49
+ ## Windows 배포
50
+
51
+ ### 인스톨러 형식
52
+
53
+ | 형식 | 특징 |
54
+ |------|------|
55
+ | **NSIS** | 크로스 컴파일 가능, 커스텀 UI |
56
+ | **MSI** | WiX 기반, Windows 전용 컴파일 |
57
+
58
+ ### WebView2 설치 모드
59
+
60
+ ```json
61
+ // tauri.conf.json > bundle > windows
62
+ {
63
+ "webviewInstallMode": {
64
+ "type": "downloadBootstrapper"
65
+ }
66
+ }
67
+ ```
68
+
69
+ | 모드 | 인터넷 | 크기 증가 | 설명 |
70
+ |------|--------|----------|------|
71
+ | `downloadBootstrapper` | 필요 | 없음 | 기본값, 최소 인스톨러 |
72
+ | `embedBootstrapper` | 필요 | ~1.8MB | Windows 7 호환 |
73
+ | `offlineInstaller` | 불필요 | ~127MB | 오프라인 환경 |
74
+ | `skip` | - | 없음 | 비권장 |
75
+
76
+ ### NSIS 설정
77
+
78
+ ```json
79
+ {
80
+ "bundle": {
81
+ "windows": {
82
+ "nsis": {
83
+ "oneClick": false,
84
+ "allowToChangeInstallationDirectory": true,
85
+ "createDesktopShortcut": true,
86
+ "createStartMenuShortcut": true,
87
+ "installMode": "both"
88
+ }
89
+ }
90
+ }
91
+ }
92
+ ```
93
+
94
+ ### Windows 코드 서명
95
+
96
+ ```json
97
+ // tauri.conf.json > bundle > windows
98
+ {
99
+ "certificateThumbprint": "A1B1A2B2...",
100
+ "digestAlgorithm": "sha256",
101
+ "timestampUrl": "http://timestamp.comodoca.com"
102
+ }
103
+ ```
104
+
105
+ **인증서 준비:**
106
+ ```bash
107
+ # PFX 변환
108
+ openssl pkcs12 -export -in cert.cer -inkey private-key.key -out certificate.pfx
109
+
110
+ # Thumbprint 확인: certmgr.msc > Details
111
+ ```
112
+
113
+ ---
114
+
115
+ ## macOS 배포
116
+
117
+ ### DMG 설정
118
+
119
+ ```json
120
+ // tauri.conf.json > bundle > macOS > dmg
121
+ {
122
+ "background": "./images/dmg-background.png",
123
+ "windowSize": { "width": 660, "height": 400 },
124
+ "appPosition": { "x": 180, "y": 220 },
125
+ "applicationFolderPosition": { "x": 480, "y": 220 }
126
+ }
127
+ ```
128
+
129
+ ### macOS 코드 서명
130
+
131
+ ```bash
132
+ # 서명 ID 확인
133
+ security find-identity -v -p codesigning
134
+
135
+ # 환경 변수 (CI/CD)
136
+ export APPLE_CERTIFICATE=<base64-encoded-p12>
137
+ export APPLE_CERTIFICATE_PASSWORD=<password>
138
+ export APPLE_SIGNING_IDENTITY="Developer ID Application: Company (TEAM123)"
139
+
140
+ # Notarization
141
+ export APPLE_API_ISSUER=<issuer-id>
142
+ export APPLE_API_KEY=<key-id>
143
+ export APPLE_API_KEY_PATH=~/.appstoreconnect/private_keys/AuthKey_<KEY_ID>.p8
144
+ ```
145
+
146
+ ### macOS App Store 제출
147
+
148
+ ```bash
149
+ # 1. Universal 빌드
150
+ npx tauri build --bundles app --target universal-apple-darwin
151
+
152
+ # 2. PKG 생성
153
+ xcrun productbuild --component MyApp.app /Applications \
154
+ --sign "Mac Installer Distribution: Company (TEAM123)" MyApp.pkg
155
+
156
+ # 3. 업로드
157
+ xcrun altool --upload-app -f MyApp.pkg -t macos \
158
+ --apiKey $KEY_ID --apiIssuer $ISSUER_ID
159
+ ```
160
+
161
+ **필수 Entitlements:**
162
+ ```xml
163
+ <!-- Entitlements.plist -->
164
+ <key>com.apple.security.app-sandbox</key>
165
+ <true/>
166
+ ```
167
+
168
+ ---
169
+
170
+ ## Linux 배포
171
+
172
+ | 포맷 | 명령어 | 대상 |
173
+ |------|--------|------|
174
+ | AppImage | `--bundles appimage` | 범용 |
175
+ | Debian | `--bundles deb` | Ubuntu, Debian |
176
+ | RPM | `--bundles rpm` | Fedora, RHEL |
177
+
178
+ ---
179
+
180
+ ## GitHub Actions CI/CD
181
+
182
+ ```yaml
183
+ name: Build & Release
184
+ on:
185
+ push:
186
+ branches: [release]
187
+
188
+ jobs:
189
+ build:
190
+ permissions:
191
+ contents: write
192
+ strategy:
193
+ fail-fast: false
194
+ matrix:
195
+ include:
196
+ - platform: macos-latest
197
+ args: '--target universal-apple-darwin'
198
+ - platform: ubuntu-22.04
199
+ args: ''
200
+ - platform: windows-latest
201
+ args: ''
202
+
203
+ runs-on: ${{ matrix.platform }}
204
+ steps:
205
+ - uses: actions/checkout@v4
206
+
207
+ - uses: actions/setup-node@v4
208
+ with:
209
+ node-version: lts/*
210
+ cache: npm
211
+
212
+ - uses: dtolnay/rust-toolchain@stable
213
+ with:
214
+ targets: aarch64-apple-darwin
215
+
216
+ - name: Install Linux deps
217
+ if: startsWith(matrix.platform, 'ubuntu-')
218
+ run: |
219
+ sudo apt-get update
220
+ sudo apt-get install -y libwebkit2gtk-4.1-dev \
221
+ libappindicator3-dev librsvg2-dev patchelf
222
+
223
+ - run: npm install
224
+
225
+ - uses: tauri-apps/tauri-action@v0
226
+ env:
227
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
228
+ APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
229
+ APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
230
+ APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
231
+ with:
232
+ tagName: v__VERSION__
233
+ releaseName: v__VERSION__
234
+ releaseDraft: true
235
+ args: ${{ matrix.args }}
236
+ ```
237
+
238
+ ---
239
+
240
+ ## 빌드 최적화
241
+
242
+ ### Cargo 프로필 설정
243
+
244
+ ```toml
245
+ # src-tauri/Cargo.toml
246
+ [profile.release]
247
+ strip = true # 디버그 심볼 제거
248
+ lto = true # Link-Time Optimization
249
+ opt-level = "s" # 사이즈 최적화 ("z"는 더 작지만 느림)
250
+ codegen-units = 1 # 최적화 극대화 (빌드 느려짐)
251
+ panic = "abort" # 패닉 시 즉시 종료 (바이너리 축소)
252
+ ```
253
+
254
+ ### 번들 사이즈 참고
255
+
256
+ | 구성 | 대략적 크기 |
257
+ |------|-----------|
258
+ | 최소 Tauri 앱 | ~600KB |
259
+ | React + Vite | ~2-5MB |
260
+ | + Plugin 몇 개 | ~5-15MB |
261
+ | Electron 동급 앱 | ~150-300MB |
@@ -0,0 +1,302 @@
1
+ # Getting Started
2
+
3
+ > Tauri v2 + React + TypeScript + Vite 프로젝트 시작 가이드
4
+
5
+ ---
6
+
7
+ ## Prerequisites
8
+
9
+ ### 모든 플랫폼 공통
10
+
11
+ ```bash
12
+ # Rust 설치
13
+ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
14
+
15
+ # Node.js (LTS)
16
+ # https://nodejs.org/ 에서 설치
17
+ ```
18
+
19
+ ### macOS
20
+
21
+ ```bash
22
+ # Xcode Command Line Tools
23
+ xcode-select --install
24
+ # 또는 App Store에서 Xcode 설치 (iOS 개발 시 필수)
25
+ ```
26
+
27
+ ### Windows
28
+
29
+ 1. **Visual Studio Build Tools** 설치
30
+ - "Desktop development with C++" 워크로드 선택
31
+ - MSVC 툴체인 기본 선택 확인
32
+ 2. **WebView2 Runtime** (Windows 10 v1803+ 기본 포함)
33
+ 3. **VBSCRIPT** feature (MSI 패키지 빌드 시)
34
+
35
+ ### Linux (Debian/Ubuntu)
36
+
37
+ ```bash
38
+ sudo apt update
39
+ sudo apt install -y libwebkit2gtk-4.1-dev build-essential curl wget \
40
+ libssl-dev libgtk-3-dev librsvg2-dev libappindicator3-dev patchelf
41
+ ```
42
+
43
+ ---
44
+
45
+ ## 프로젝트 생성
46
+
47
+ ### 방법 1: create-tauri-app (권장)
48
+
49
+ ```bash
50
+ # npm
51
+ npm create tauri-app@latest
52
+
53
+ # 대화형 프롬프트:
54
+ # - Project name: my-app
55
+ # - Identifier: com.example.myapp
56
+ # - Frontend language: TypeScript / JavaScript
57
+ # - Package manager: npm (또는 pnpm, yarn)
58
+ # - UI template: React
59
+ # - UI flavor: TypeScript
60
+ ```
61
+
62
+ ### 방법 2: 기존 Vite 프로젝트에 추가
63
+
64
+ ```bash
65
+ # 1. Vite + React + TS 프로젝트 생성
66
+ npm create vite@latest my-app -- --template react-ts
67
+ cd my-app
68
+ npm install
69
+
70
+ # 2. Tauri CLI 설치
71
+ npm add -D @tauri-apps/cli@latest
72
+
73
+ # 3. Tauri 초기화
74
+ npx tauri init
75
+ # - App name: my-app
76
+ # - Window title: My App
77
+ # - Web assets location: ../dist
78
+ # - Dev server URL: http://localhost:5173
79
+ # - Dev command: npm run dev
80
+ # - Build command: npm run build
81
+
82
+ # 4. Tauri API 패키지
83
+ npm add @tauri-apps/api
84
+ ```
85
+
86
+ ---
87
+
88
+ ## 개발 시작
89
+
90
+ ```bash
91
+ # 개발 서버 + Tauri 앱 실행
92
+ npx tauri dev
93
+
94
+ # 또는 package.json에 스크립트 추가
95
+ # "tauri": "tauri"
96
+ npm run tauri dev
97
+ ```
98
+
99
+ **개발 모드 특징:**
100
+ - Vite HMR (프론트엔드 변경 → 즉시 반영)
101
+ - Rust 코드 변경 → 자동 재컴파일
102
+ - DevTools 접근 가능
103
+
104
+ ---
105
+
106
+ ## 프로젝트 구조
107
+
108
+ ```
109
+ my-app/
110
+ ├── src/ # React + TypeScript (프론트엔드)
111
+ │ ├── main.tsx # React 엔트리
112
+ │ ├── App.tsx # 루트 컴포넌트
113
+ │ ├── App.css
114
+ │ └── components/
115
+ ├── src-tauri/ # Rust (백엔드)
116
+ │ ├── src/
117
+ │ │ ├── main.rs # 데스크톱 엔트리
118
+ │ │ └── lib.rs # 공유 로직 (모바일 지원)
119
+ │ ├── capabilities/
120
+ │ │ └── default.json # 기본 권한
121
+ │ ├── icons/ # 앱 아이콘
122
+ │ ├── Cargo.toml # Rust 의존성
123
+ │ ├── tauri.conf.json # Tauri 설정
124
+ │ └── build.rs # 빌드 스크립트
125
+ ├── public/ # 정적 파일
126
+ ├── index.html
127
+ ├── package.json
128
+ ├── tsconfig.json
129
+ └── vite.config.ts
130
+ ```
131
+
132
+ ---
133
+
134
+ ## Vite 설정
135
+
136
+ ```typescript
137
+ // vite.config.ts
138
+ import { defineConfig } from 'vite';
139
+ import react from '@vitejs/plugin-react';
140
+
141
+ const host = process.env.TAURI_DEV_HOST;
142
+
143
+ export default defineConfig({
144
+ plugins: [react()],
145
+ clearScreen: false,
146
+ server: {
147
+ port: 5173,
148
+ strictPort: true, // Tauri가 기대하는 포트 보장
149
+ host: host || false, // 모바일 물리 디바이스 개발 시
150
+ hmr: host
151
+ ? { protocol: 'ws', host, port: 1421 }
152
+ : undefined,
153
+ watch: {
154
+ ignored: ['**/src-tauri/**'], // Rust 재빌드 트리거 방지
155
+ },
156
+ },
157
+ envPrefix: ['VITE_', 'TAURI_ENV_*'],
158
+ build: {
159
+ target: process.env.TAURI_ENV_PLATFORM === 'windows'
160
+ ? 'chrome105'
161
+ : 'safari13',
162
+ minify: !process.env.TAURI_ENV_DEBUG ? 'esbuild' : false,
163
+ sourcemap: !!process.env.TAURI_ENV_DEBUG,
164
+ },
165
+ });
166
+ ```
167
+
168
+ ---
169
+
170
+ ## Tauri 설정 (tauri.conf.json)
171
+
172
+ ```json
173
+ {
174
+ "productName": "my-app",
175
+ "version": "0.1.0",
176
+ "identifier": "com.example.myapp",
177
+ "build": {
178
+ "beforeDevCommand": "npm run dev",
179
+ "beforeBuildCommand": "npm run build",
180
+ "devUrl": "http://localhost:5173",
181
+ "frontendDist": "../dist"
182
+ },
183
+ "app": {
184
+ "windows": [
185
+ {
186
+ "title": "My App",
187
+ "width": 1024,
188
+ "height": 768,
189
+ "resizable": true,
190
+ "fullscreen": false
191
+ }
192
+ ],
193
+ "security": {
194
+ "csp": {
195
+ "default-src": "'self' customprotocol: asset:",
196
+ "connect-src": "ipc: http://ipc.localhost",
197
+ "img-src": "'self' asset: http://asset.localhost blob: data:",
198
+ "style-src": "'unsafe-inline' 'self'"
199
+ }
200
+ }
201
+ },
202
+ "bundle": {
203
+ "active": true,
204
+ "icon": [
205
+ "icons/32x32.png",
206
+ "icons/128x128.png",
207
+ "icons/128x128@2x.png",
208
+ "icons/icon.icns",
209
+ "icons/icon.ico"
210
+ ]
211
+ }
212
+ }
213
+ ```
214
+
215
+ ---
216
+
217
+ ## 첫 번째 Command 만들기
218
+
219
+ ### 1. Rust Command 정의
220
+
221
+ ```rust
222
+ // src-tauri/src/lib.rs
223
+ #[tauri::command]
224
+ fn greet(name: &str) -> String {
225
+ format!("Hello, {}! You've been greeted from Rust!", name)
226
+ }
227
+
228
+ #[cfg_attr(mobile, tauri::mobile_entry_point)]
229
+ pub fn run() {
230
+ tauri::Builder::default()
231
+ .invoke_handler(tauri::generate_handler![greet])
232
+ .run(tauri::generate_context!())
233
+ .expect("error while running tauri application");
234
+ }
235
+ ```
236
+
237
+ ```rust
238
+ // src-tauri/src/main.rs
239
+ #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
240
+
241
+ fn main() {
242
+ my_app_lib::run()
243
+ }
244
+ ```
245
+
246
+ ### 2. 프론트엔드에서 호출
247
+
248
+ ```tsx
249
+ // src/App.tsx
250
+ import { useState } from 'react';
251
+ import { invoke } from '@tauri-apps/api/core';
252
+
253
+ function App() {
254
+ const [greeting, setGreeting] = useState('');
255
+ const [name, setName] = useState('');
256
+
257
+ async function handleGreet() {
258
+ const result = await invoke<string>('greet', { name });
259
+ setGreeting(result);
260
+ }
261
+
262
+ return (
263
+ <div>
264
+ <input value={name} onChange={(e) => setName(e.target.value)} />
265
+ <button onClick={handleGreet}>Greet</button>
266
+ <p>{greeting}</p>
267
+ </div>
268
+ );
269
+ }
270
+
271
+ export default App;
272
+ ```
273
+
274
+ ### 3. Capability 추가 (필요 시)
275
+
276
+ ```json
277
+ // src-tauri/capabilities/default.json
278
+ {
279
+ "identifier": "default",
280
+ "description": "기본 앱 권한",
281
+ "windows": ["main"],
282
+ "permissions": [
283
+ "core:default"
284
+ ]
285
+ }
286
+ ```
287
+
288
+ ---
289
+
290
+ ## CLI 명령어
291
+
292
+ | 명령어 | 설명 |
293
+ |--------|------|
294
+ | `npx tauri dev` | 개발 모드 실행 |
295
+ | `npx tauri build` | 프로덕션 빌드 |
296
+ | `npx tauri icon <path>` | 앱 아이콘 생성 |
297
+ | `npx tauri info` | 시스템 정보 출력 |
298
+ | `npx tauri init` | Tauri 프로젝트 초기화 |
299
+ | `npx tauri android init` | Android 프로젝트 초기화 |
300
+ | `npx tauri ios init` | iOS 프로젝트 초기화 |
301
+ | `npx tauri android dev` | Android 개발 모드 |
302
+ | `npx tauri ios dev` | iOS 개발 모드 |