cf-yoyo 1.0.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.
- package/.eslintrc.json +28 -0
- package/.github/workflows/ci.yml +96 -0
- package/.prettierrc.json +10 -0
- package/CHANGELOG.md +55 -0
- package/README.md +138 -0
- package/__tests__/cli-e2e.test.ts +145 -0
- package/__tests__/config.test.ts +268 -0
- package/__tests__/filesystem.test.ts +453 -0
- package/__tests__/logger.test.ts +274 -0
- package/__tests__/template-engine.test.ts +450 -0
- package/__tests__/types.test.ts +25 -0
- package/deep_todos.md +766 -0
- package/dist/cli/commands/create.d.ts +26 -0
- package/dist/cli/commands/create.d.ts.map +1 -0
- package/dist/cli/commands/create.js +308 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/git.d.ts +10 -0
- package/dist/cli/commands/git.d.ts.map +1 -0
- package/dist/cli/commands/git.js +887 -0
- package/dist/cli/commands/git.js.map +1 -0
- package/dist/cli/commands/list.d.ts +10 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +90 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +62 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/config.d.ts +35 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +260 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/filesystem.d.ts +84 -0
- package/dist/core/filesystem.d.ts.map +1 -0
- package/dist/core/filesystem.js +417 -0
- package/dist/core/filesystem.js.map +1 -0
- package/dist/core/git-token.d.ts +81 -0
- package/dist/core/git-token.d.ts.map +1 -0
- package/dist/core/git-token.js +244 -0
- package/dist/core/git-token.js.map +1 -0
- package/dist/core/git.d.ts +70 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +367 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/prompt.d.ts +28 -0
- package/dist/core/prompt.d.ts.map +1 -0
- package/dist/core/prompt.js +253 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/core/template-engine.d.ts +52 -0
- package/dist/core/template-engine.d.ts.map +1 -0
- package/dist/core/template-engine.js +308 -0
- package/dist/core/template-engine.js.map +1 -0
- package/dist/core/template-manager.d.ts +54 -0
- package/dist/core/template-manager.d.ts.map +1 -0
- package/dist/core/template-manager.js +330 -0
- package/dist/core/template-manager.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +244 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +51 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/logger.d.ts +68 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +140 -0
- package/dist/utils/logger.js.map +1 -0
- package/memory.md +241 -0
- package/need-debug.md +395 -0
- package/package.json +42 -0
- package/src/cli/commands/create.ts +326 -0
- package/src/cli/commands/git.ts +1001 -0
- package/src/cli/commands/list.ts +97 -0
- package/src/cli/index.ts +71 -0
- package/src/core/config.ts +262 -0
- package/src/core/filesystem.ts +408 -0
- package/src/core/git-token.ts +248 -0
- package/src/core/git.ts +384 -0
- package/src/core/prompt.ts +345 -0
- package/src/core/template-engine.ts +324 -0
- package/src/core/template-manager.ts +338 -0
- package/src/index.ts +19 -0
- package/src/types/index.ts +259 -0
- package/src/utils/logger.ts +150 -0
- package/templates/pages/basic/README.md.mustache +63 -0
- package/templates/pages/basic/package.json.mustache +23 -0
- package/templates/pages/basic/public/css/style.css +199 -0
- package/templates/pages/basic/public/index.html.mustache +72 -0
- package/templates/pages/basic/public/js/main.js +103 -0
- package/templates/pages/basic/template.json +38 -0
- package/templates/pages/basic/tsconfig.json +21 -0
- package/templates/pages/basic/wrangler.toml.mustache +14 -0
- package/templates/pages/basic-js/README.md.mustache +62 -0
- package/templates/pages/basic-js/package.json.mustache +25 -0
- package/templates/pages/basic-js/public/css/style.css +212 -0
- package/templates/pages/basic-js/public/index.html.mustache +53 -0
- package/templates/pages/basic-js/public/js/main.js +134 -0
- package/templates/pages/basic-js/template.json +35 -0
- package/templates/pages/basic-js/wrangler.toml.mustache +14 -0
- package/templates/pages/react/README.md.mustache +97 -0
- package/templates/pages/react/index.html.mustache +14 -0
- package/templates/pages/react/package.json.mustache +34 -0
- package/templates/pages/react/src/App.css +168 -0
- package/templates/pages/react/src/App.tsx.mustache +62 -0
- package/templates/pages/react/src/index.css +53 -0
- package/templates/pages/react/src/main.tsx.mustache +10 -0
- package/templates/pages/react/src/vite-env.d.ts +1 -0
- package/templates/pages/react/template.json +54 -0
- package/templates/pages/react/tsconfig.json +21 -0
- package/templates/pages/react/tsconfig.node.json +10 -0
- package/templates/pages/react/vite.config.ts +16 -0
- package/templates/worker/basic/README.md.mustache +56 -0
- package/templates/worker/basic/package.json.mustache +29 -0
- package/templates/worker/basic/src/index.ts.mustache +125 -0
- package/templates/worker/basic/template.json +30 -0
- package/templates/worker/basic/tsconfig.json +24 -0
- package/templates/worker/basic/wrangler.toml.mustache +33 -0
- package/templates/worker/basic-js/README.md.mustache +55 -0
- package/templates/worker/basic-js/package.json.mustache +25 -0
- package/templates/worker/basic-js/src/index.js.mustache +146 -0
- package/templates/worker/basic-js/template.json +27 -0
- package/templates/worker/basic-js/wrangler.toml.mustache +33 -0
- package/templates/worker/hono/README.md.mustache +79 -0
- package/templates/worker/hono/package.json.mustache +33 -0
- package/templates/worker/hono/src/index.ts.mustache +64 -0
- package/templates/worker/hono/src/routes/index.ts.mustache +165 -0
- package/templates/worker/hono/template.json +34 -0
- package/templates/worker/hono/tsconfig.json +24 -0
- package/templates/worker/hono/wrangler.toml.mustache +36 -0
- package/templates/worker/hono-js/README.md.mustache +67 -0
- package/templates/worker/hono-js/package.json.mustache +29 -0
- package/templates/worker/hono-js/src/index.js.mustache +55 -0
- package/templates/worker/hono-js/src/routes/index.js.mustache +127 -0
- package/templates/worker/hono-js/template.json +31 -0
- package/templates/worker/hono-js/wrangler.toml.mustache +36 -0
- package/thoughts/ledgers/CONTINUITY_ses_287e.md +74 -0
- package/thoughts/ledgers/CONTINUITY_ses_28b5.md +85 -0
- package/tsconfig.json +30 -0
- package/vitest.config.ts +20 -0
- package//351/240/205/347/233/256/350/241/250.md +140 -0
package/deep_todos.md
ADDED
|
@@ -0,0 +1,766 @@
|
|
|
1
|
+
# Cloudflare 專案腳手架 CLI 工具 - 規劃文件
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## 0. 交付摘要(給人先看重點)
|
|
6
|
+
|
|
7
|
+
| 欄位 | 內容 |
|
|
8
|
+
|------|------|
|
|
9
|
+
| **任務名稱** | Cloudflare 專案腳手架 CLI 工具規劃 |
|
|
10
|
+
| **目前階段** | 規劃階段(初次建置) |
|
|
11
|
+
| **推薦方案** | 方案 A:Commander.js + Inquirer.js 組合方案 |
|
|
12
|
+
| **本輪主目標** | 建立可審閱的規劃文件,定義技術選型與實施路線 |
|
|
13
|
+
| **本輪不做** | 實際代碼開發、測試、發布 |
|
|
14
|
+
| **最大風險** | 技術選型與 Cloudflare 生態整合的相容性 |
|
|
15
|
+
| **下一個關鍵動作** | 用戶確認推薦方案後,進入方案 A 的實施階段 |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 1. 當前決策快照(給主 agent / 用戶快速判斷)
|
|
20
|
+
|
|
21
|
+
### 1.1 已確定事項
|
|
22
|
+
|
|
23
|
+
| 項目 | 決策內容 |
|
|
24
|
+
|------|----------|
|
|
25
|
+
| 技術語言 | Node.js + TypeScript |
|
|
26
|
+
| 目標平台 | Cloudflare 相關專案腳手架 |
|
|
27
|
+
| 核心功能 | 互動式問答、設定檔管理、日誌輸出、子命令結構 |
|
|
28
|
+
| 專案原則 | 繁體中文、保持整潔、可閱讀性、代碼整潔、拒絕 demo |
|
|
29
|
+
| 用戶環境 | 已有 Cloudflare 帳號,CLI 已配置完成 |
|
|
30
|
+
|
|
31
|
+
### 1.2 待確認事項
|
|
32
|
+
|
|
33
|
+
| 項目 | 問題 | 保守預設 |
|
|
34
|
+
|------|------|----------|
|
|
35
|
+
| 專案名稱 | CLI 工具的 npm 套件名稱 | `create-cf-project` 或 `cf-cli-scaffold` |
|
|
36
|
+
| 支援的專案類型 | 要支援哪些 Cloudflare 產品類型 | Worker、Pages、D1、KV、R2 |
|
|
37
|
+
| 模板來源 | 本地模板 vs 遠端 Git 倉庫 | 本地模板(優先),遠端模板(擴充) |
|
|
38
|
+
| Node.js 版本 | 最低支援版本 | v18 LTS(保守預設) |
|
|
39
|
+
|
|
40
|
+
### 1.3 本輪建議決策
|
|
41
|
+
|
|
42
|
+
- **推薦方案**:方案 A(Commander.js + Inquirer.js)
|
|
43
|
+
- **原因**:生態成熟、學習成本低、可快速實現生產級功能
|
|
44
|
+
- **實施順序**:核心 CLI → 模板系統 → 配置管理 → 測試 → 發布
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 2. 任務背景與目標
|
|
49
|
+
|
|
50
|
+
### 2.1 背景
|
|
51
|
+
|
|
52
|
+
用戶需要一個類似 `create-cloudflare` 或 `create-next-app` 的 CLI 工具,用於快速產生 Cloudflare 相關專案的初始腳手架。此工具將幫助開發者:
|
|
53
|
+
|
|
54
|
+
- 快速建立符合 Cloudflare 生態標準的專案結構
|
|
55
|
+
- 自動配置 Cloudflare Workers、Pages、D1、KV、R2 等服務
|
|
56
|
+
- 提供互動式導引,降低新手門檻
|
|
57
|
+
- 統一團隊的專案初始化流程
|
|
58
|
+
|
|
59
|
+
### 2.2 目標
|
|
60
|
+
|
|
61
|
+
| 目標類型 | 具體描述 |
|
|
62
|
+
|----------|----------|
|
|
63
|
+
| 功能目標 | 實現互動式專案創建、多種專案類型支援、配置檔生成 |
|
|
64
|
+
| 品質目標 | 生產環境標準、TypeScript 嚴格模式、完整測試覆蓋 |
|
|
65
|
+
| 用戶體驗 | 清晰的終端輸出、友好的錯誤提示、可預期的行為 |
|
|
66
|
+
| 維護目標 | 模組化設計、清晰的文件、易於擴展的架構 |
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## 3. 範圍界定
|
|
71
|
+
|
|
72
|
+
### 3.1 包含範圍(In Scope)
|
|
73
|
+
|
|
74
|
+
#### 核心功能
|
|
75
|
+
- [x] CLI 入口與子命令系統
|
|
76
|
+
- [x] 互動式問答流程(專案名稱、類型、配置選項)
|
|
77
|
+
- [x] 專案模板管理與檔案生成
|
|
78
|
+
- [x] 設定檔初始化(wrangler.toml、tsconfig.json、package.json 等)
|
|
79
|
+
- [x] 日誌輸出與終端美化
|
|
80
|
+
- [x] 錯誤處理與用戶反饋
|
|
81
|
+
|
|
82
|
+
#### 支援的專案類型
|
|
83
|
+
- [x] Cloudflare Workers(基礎 Worker、Hono、itty-router)
|
|
84
|
+
- [x] Cloudflare Pages(靜態站點、前端框架整合)
|
|
85
|
+
- [x] 資料庫整合(D1 配置)
|
|
86
|
+
- [x] 存儲整合(KV、R2 配置)
|
|
87
|
+
|
|
88
|
+
#### 開發相關
|
|
89
|
+
- [x] TypeScript 嚴格模式
|
|
90
|
+
- [x] 單元測試與整合測試
|
|
91
|
+
- [x] ESLint + Prettier 配置
|
|
92
|
+
- [x] CI/CD 流程(GitHub Actions)
|
|
93
|
+
- [x] npm 套件發布流程
|
|
94
|
+
|
|
95
|
+
### 3.2 不包含範圍(Out of Scope)
|
|
96
|
+
|
|
97
|
+
- [ ] 遠端模板倉庫的管理界面(僅支援 Git URL)
|
|
98
|
+
- [ ] 專案部署功能(專注於腳手架生成)
|
|
99
|
+
- [ ] 圖形化界面(GUI)版本
|
|
100
|
+
- [ ] 雲端存儲的實際資料操作(僅生成配置)
|
|
101
|
+
- [ ] 多語言支援(僅繁體中文與英文錯誤訊息)
|
|
102
|
+
|
|
103
|
+
### 3.3 未來擴展(Future Scope)
|
|
104
|
+
|
|
105
|
+
- [ ] 插件系統支援
|
|
106
|
+
- [ ] 自定義模板倉庫
|
|
107
|
+
- [ ] 專案更新機制(migrate)
|
|
108
|
+
- [ ] VS Code 擴充套件
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 4. 約束、前提與保守預設
|
|
113
|
+
|
|
114
|
+
### 4.1 技術約束
|
|
115
|
+
|
|
116
|
+
| 約束項目 | 說明 |
|
|
117
|
+
|----------|------|
|
|
118
|
+
| Node.js 版本 | 最低 v18 LTS(保守預設),建議 v20+ |
|
|
119
|
+
| 套件管理器 | 預設使用 npm,相容 pnpm/yarn |
|
|
120
|
+
| TypeScript | 嚴格模式啟用,target ES2022 |
|
|
121
|
+
| 依賴原則 | 優先使用成熟穩定的套件,避免實驗性技術 |
|
|
122
|
+
|
|
123
|
+
### 4.2 環境前提
|
|
124
|
+
|
|
125
|
+
| 前提項目 | 狀態 |
|
|
126
|
+
|----------|------|
|
|
127
|
+
| Cloudflare 帳號 | ✅ 用戶已有 |
|
|
128
|
+
| Cloudflare CLI | ✅ 已連接帳號 |
|
|
129
|
+
| R2 存儲桶 | ❌ 用戶沒有(不影響規劃) |
|
|
130
|
+
| 手機電話號碼 | ❌ 用戶沒有(不影響 CLI 工具本身) |
|
|
131
|
+
|
|
132
|
+
### 4.3 保守預設
|
|
133
|
+
|
|
134
|
+
| 項目 | 預設值 | 說明 |
|
|
135
|
+
|------|--------|------|
|
|
136
|
+
| CLI 名稱 | `create-cf-project` | 可透過 `npm init` 或 `npx` 執行 |
|
|
137
|
+
| 專案輸出目錄 | `./<project-name>` | 相對於當前工作目錄 |
|
|
138
|
+
| 預設模板分支 | `main` | 遠端模板倉庫 |
|
|
139
|
+
| 配置覆蓋行為 | 詢問用戶確認 | 避免意外覆蓋既有檔案 |
|
|
140
|
+
| 日誌級別 | `info` | 支援 debug/info/warn/error |
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 5. 驗收視角
|
|
145
|
+
|
|
146
|
+
### 5.1 功能驗收
|
|
147
|
+
|
|
148
|
+
| 驗收項目 | 驗收標準 |
|
|
149
|
+
|----------|----------|
|
|
150
|
+
| CLI 基本運行 | `npx create-cf-project` 可正常啟動 |
|
|
151
|
+
| 互動式問答 | 所有問題都有明確提示,輸入驗證正確 |
|
|
152
|
+
| 專案生成 | 根據選項正確生成檔案結構 |
|
|
153
|
+
| 模板渲染 | 變數替換正確,無遺漏 |
|
|
154
|
+
| 錯誤處理 | 無效輸入、權限問題都有友好提示 |
|
|
155
|
+
|
|
156
|
+
### 5.2 品質驗收
|
|
157
|
+
|
|
158
|
+
| 驗收項目 | 驗收標準 |
|
|
159
|
+
|----------|----------|
|
|
160
|
+
| 測試覆蓋率 | 核心邏輯 >= 80% |
|
|
161
|
+
| TypeScript | 無 `any` 類型,無編譯錯誤 |
|
|
162
|
+
| 代碼風格 | ESLint + Prettier 無警告 |
|
|
163
|
+
| 文件完整性 | README、API 文檔、使用範例齊全 |
|
|
164
|
+
|
|
165
|
+
### 5.3 用戶體驗驗收
|
|
166
|
+
|
|
167
|
+
| 驗收項目 | 驗收標準 |
|
|
168
|
+
|----------|----------|
|
|
169
|
+
| 首次執行 | 新用戶可在 5 分鐘內完成第一個專案創建 |
|
|
170
|
+
| 錯誤訊息 | 中文或英文,明確指出問題與解決方案 |
|
|
171
|
+
| 執行速度 | 基本專案創建 < 10 秒(不含 npm install) |
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## 6. 完整任務拆解(WBS)
|
|
176
|
+
|
|
177
|
+
### 6.1 Phase 1:專案基礎建設
|
|
178
|
+
|
|
179
|
+
| 任務 ID | 任務名稱 | 工時估計 | 依賴 | 負責角色 | 產出/驗證 |
|
|
180
|
+
|---------|----------|----------|------|----------|-----------|
|
|
181
|
+
| P1-T1 | 專案初始化與配置 | 2h | 無 | 架構師 | package.json、tsconfig.json、目錄結構 |
|
|
182
|
+
| P1-T2 | ESLint + Prettier 配置 | 1h | P1-T1 | 開發者 | 配置文件、格式化腳本 |
|
|
183
|
+
| P1-T3 | Git 倉庫初始化 | 0.5h | 無 | 開發者 | .gitignore、初始提交 |
|
|
184
|
+
| P1-T4 | 開發環境配置 | 1h | P1-T1 | 開發者 | dev 腳本、hot reload |
|
|
185
|
+
|
|
186
|
+
### 6.2 Phase 2:核心模組開發
|
|
187
|
+
|
|
188
|
+
| 任務 ID | 任務名稱 | 工時估計 | 依賴 | 負責角色 | 產出/驗證 |
|
|
189
|
+
|---------|----------|----------|------|----------|-----------|
|
|
190
|
+
| P2-T1 | CLI 入口與命令註冊 | 3h | P1 | 開發者 | 可執行的 CLI、help 輸出 |
|
|
191
|
+
| P2-T2 | 互動式問答模組 | 4h | P2-T1 | 開發者 | Prompt 流程、輸入驗證 |
|
|
192
|
+
| P2-T3 | 專案配置解析 | 3h | P2-T2 | 開發者 | 配置合併、預設值處理 |
|
|
193
|
+
| P2-T4 | 檔案系統操作 | 3h | P2-T3 | 開發者 | 目錄創建、檔案寫入、衝突處理 |
|
|
194
|
+
|
|
195
|
+
### 6.3 Phase 3:模板系統
|
|
196
|
+
|
|
197
|
+
| 任務 ID | 任務名稱 | 工時估計 | 依賴 | 負責角色 | 產出/驗證 |
|
|
198
|
+
|---------|----------|----------|------|----------|-----------|
|
|
199
|
+
| P3-T1 | 模板引擎設計 | 4h | P2 | 架構師 | 模板格式規範、變數語法 |
|
|
200
|
+
| P3-T2 | 本地模板實現 | 6h | P3-T1 | 開發者 | Worker、Pages、D1 模板 |
|
|
201
|
+
| P3-T3 | 遠端模板支援 | 4h | P3-T2 | 開發者 | Git 倉庫下載、快取機制 |
|
|
202
|
+
| P3-T4 | 模板渲染引擎 | 4h | P3-T1 | 開發者 | 變數替換、條件渲染 |
|
|
203
|
+
|
|
204
|
+
### 6.4 Phase 4:日誌與配置
|
|
205
|
+
|
|
206
|
+
| 任務 ID | 任務名稱 | 工時估計 | 依賴 | 負責角色 | 產出/驗證 |
|
|
207
|
+
|---------|----------|----------|------|----------|-----------|
|
|
208
|
+
| P4-T1 | 日誌系統設計 | 3h | P2 | 開發者 | 分級日誌、彩色輸出、靜默模式 |
|
|
209
|
+
| P4-T2 | 進度指示器 | 2h | P4-T1 | 開發者 | spinner、進度條 |
|
|
210
|
+
| P4-T3 | 全局配置管理 | 3h | P4-T1 | 開發者 | 用戶偏好儲存、配置檔讀取 |
|
|
211
|
+
| P4-T4 | 錯誤處理與報告 | 3h | P4-T1 | 開發者 | 錯誤分類、友好提示 |
|
|
212
|
+
|
|
213
|
+
### 6.5 Phase 5:測試與品質
|
|
214
|
+
|
|
215
|
+
| 任務 ID | 任務名稱 | 工時估計 | 依賴 | 負責角色 | 產出/驗證 |
|
|
216
|
+
|---------|----------|----------|------|----------|-----------|
|
|
217
|
+
| P5-T1 | 單元測試框架 | 2h | P2 | 測試工程師 | Vitest 配置、測試結構 |
|
|
218
|
+
| P5-T2 | 核心邏輯測試 | 6h | P5-T1 | 測試工程師 | 問答、配置、檔案操作測試 |
|
|
219
|
+
| P5-T3 | 整合測試 | 4h | P5-T2 | 測試工程師 | E2E CLI 測試 |
|
|
220
|
+
| P5-T4 | 測試覆蓋率報告 | 2h | P5-T3 | 測試工程師 | Coverage >= 80% |
|
|
221
|
+
|
|
222
|
+
### 6.6 Phase 6:發布與文件
|
|
223
|
+
|
|
224
|
+
| 任務 ID | 任務名稱 | 工時估計 | 依賴 | 負責角色 | 產出/驗證 |
|
|
225
|
+
|---------|----------|----------|------|----------|-----------|
|
|
226
|
+
| P6-T1 | README 撰寫 | 2h | P3,P4 | 技術寫手 | 安裝、使用、配置說明 |
|
|
227
|
+
| P6-T2 | API 文件 | 3h | P6-T1 | 技術寫手 | TypeDoc 生成、範例代碼 |
|
|
228
|
+
| P6-T3 | CHANGELOG 機制 | 1h | P6-T1 | 開發者 | 版本記錄規範 |
|
|
229
|
+
| P6-T4 | CI/CD 配置 | 3h | P5 | DevOps | GitHub Actions、自動測試、發布 |
|
|
230
|
+
| P6-T5 | npm 發布 | 1h | P6-T4 | 維護者 | 套件發布、tag 管理 |
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## 7. 依賴、關鍵路徑與里程碑
|
|
235
|
+
|
|
236
|
+
### 7.1 依賴圖
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
P1 (基礎建設)
|
|
240
|
+
│
|
|
241
|
+
├─→ P2 (核心模組)
|
|
242
|
+
│ │
|
|
243
|
+
│ ├─→ P3 (模板系統)
|
|
244
|
+
│ │
|
|
245
|
+
│ └─→ P4 (日誌配置)
|
|
246
|
+
│ │
|
|
247
|
+
└───────────┴─→ P5 (測試品質)
|
|
248
|
+
│
|
|
249
|
+
└─→ P6 (發布文件)
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### 7.2 關鍵路徑
|
|
253
|
+
|
|
254
|
+
**P1 → P2 → P3 → P5 → P6**
|
|
255
|
+
|
|
256
|
+
總工時估計:約 60 小時
|
|
257
|
+
|
|
258
|
+
### 7.3 里程碑
|
|
259
|
+
|
|
260
|
+
| 里程碑 | 預計完成 | 交付物 | 驗收標準 |
|
|
261
|
+
|--------|----------|--------|----------|
|
|
262
|
+
| M1 - 基礎就緒 | Day 1-2 | 專案結構、開發環境 | 可執行 `npm run dev` |
|
|
263
|
+
| M2 - 核心可用 | Day 5-7 | CLI 基本流程、問答功能 | 可交互創建簡單專案 |
|
|
264
|
+
| M3 - 模板完成 | Day 10-12 | 多類型模板支援 | Worker、Pages 模板可用 |
|
|
265
|
+
| M4 - 品質達標 | Day 14-16 | 測試覆蓋率達標 | Coverage >= 80% |
|
|
266
|
+
| M5 - 發布就緒 | Day 17-18 | npm 套件發布 | 可透過 npx 安裝使用 |
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## 8. 方案 A:Commander.js + Inquirer.js(推薦)
|
|
271
|
+
|
|
272
|
+
### 8.1 核心思路
|
|
273
|
+
|
|
274
|
+
使用業界最成熟的 CLI 框架組合:
|
|
275
|
+
- **Commander.js**:處理命令解析、子命令、選項
|
|
276
|
+
- **Inquirer.js**:處理互動式問答、輸入驗證
|
|
277
|
+
- **Chalk + Ora**:美化終端輸出、顯示進度
|
|
278
|
+
|
|
279
|
+
### 8.2 技術架構
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
src/
|
|
283
|
+
├── index.ts # CLI 入口
|
|
284
|
+
├── commands/
|
|
285
|
+
│ ├── create.ts # create 子命令
|
|
286
|
+
│ ├── list.ts # list 子命令
|
|
287
|
+
│ └── init.ts # init 子命令
|
|
288
|
+
├── prompts/
|
|
289
|
+
│ ├── project.ts # 專案相關問題
|
|
290
|
+
│ ├── template.ts # 模板選擇問題
|
|
291
|
+
│ └── config.ts # 配置相關問題
|
|
292
|
+
├── templates/
|
|
293
|
+
│ ├── worker/ # Worker 模板
|
|
294
|
+
│ ├── pages/ # Pages 模板
|
|
295
|
+
│ └── shared/ # 共享模板
|
|
296
|
+
├── utils/
|
|
297
|
+
│ ├── logger.ts # 日誌工具
|
|
298
|
+
│ ├── fs.ts # 檔案操作
|
|
299
|
+
│ └── git.ts # Git 操作
|
|
300
|
+
└── types/
|
|
301
|
+
└── index.ts # TypeScript 類型定義
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### 8.3 主要套件
|
|
305
|
+
|
|
306
|
+
| 套件名稱 | 用途 | 版本策略 |
|
|
307
|
+
|----------|------|----------|
|
|
308
|
+
| commander | 命令解析 | ^11.x |
|
|
309
|
+
| inquirer | 互動問答 | ^9.x |
|
|
310
|
+
| chalk | 終端顏色 | ^5.x |
|
|
311
|
+
| ora | 載入指示器 | ^7.x |
|
|
312
|
+
| execa | 進程執行 | ^8.x |
|
|
313
|
+
| fs-extra | 檔案操作 | ^11.x |
|
|
314
|
+
| mustache | 模板渲染 | ^4.x |
|
|
315
|
+
|
|
316
|
+
### 8.4 優點
|
|
317
|
+
|
|
318
|
+
1. **生態成熟**:Commander.js 和 Inquirer.js 是 Node.js CLI 的標準方案
|
|
319
|
+
2. **學習成本低**:大量文件、範例、Stack Overflow 資源
|
|
320
|
+
3. **維護穩定**:核心貢獻者活躍,版本更新穩定
|
|
321
|
+
4. **類型支援**:均有完善的 TypeScript 類型定義
|
|
322
|
+
5. **可擴展性**:插件機制成熟,易於自定義
|
|
323
|
+
|
|
324
|
+
### 8.5 代價
|
|
325
|
+
|
|
326
|
+
1. **套件體積**:依賴較多,node_modules 較大(約 10-15MB)
|
|
327
|
+
2. **版本鎖定**:需定期更新以獲得安全修復
|
|
328
|
+
3. **自定義限制**:框架約束下的自定義需要額外工作
|
|
329
|
+
|
|
330
|
+
### 8.6 主要風險
|
|
331
|
+
|
|
332
|
+
| 風險 | 影響 | 緩解措施 |
|
|
333
|
+
|------|------|----------|
|
|
334
|
+
| 套件棄用 | 中 | 選擇維護活躍的套件 |
|
|
335
|
+
| 版本衝突 | 低 | 鎖定版本範圍 |
|
|
336
|
+
| 效能問題 | 低 | CLI 工具對效能要求不高 |
|
|
337
|
+
|
|
338
|
+
### 8.7 不適用情境
|
|
339
|
+
|
|
340
|
+
- 極度輕量需求(< 100 行代碼)
|
|
341
|
+
- 需要完全自定義的命令解析邏輯
|
|
342
|
+
- 對套件體積有嚴格限制(< 1MB)
|
|
343
|
+
|
|
344
|
+
### 8.8 對應 WBS 任務
|
|
345
|
+
|
|
346
|
+
- P2-T1(CLI 入口):使用 Commander.js 實現
|
|
347
|
+
- P2-T2(互動問答):使用 Inquirer.js 實現
|
|
348
|
+
- P4-T1(日誌系統):使用 Chalk + Ora 實現
|
|
349
|
+
- P3-T4(模板渲染):使用 Mustache 實現
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
353
|
+
## 9. 方案 B:基於 create-cloudflare 擴展
|
|
354
|
+
|
|
355
|
+
### 9.1 核心思路
|
|
356
|
+
|
|
357
|
+
基於 Cloudflare 官方的 `create-cloudflare`(C3)工具進行擴展或封裝:
|
|
358
|
+
- 複用官方模板和配置邏輯
|
|
359
|
+
- 添加自定義的互動流程和模板
|
|
360
|
+
- 保持與官方生態的相容性
|
|
361
|
+
|
|
362
|
+
### 9.2 技術架構
|
|
363
|
+
|
|
364
|
+
```
|
|
365
|
+
src/
|
|
366
|
+
├── index.ts
|
|
367
|
+
├── wrappers/
|
|
368
|
+
│ └── c3.ts # C3 調用包裝
|
|
369
|
+
├── extensions/
|
|
370
|
+
│ ├── templates/ # 自定義模板
|
|
371
|
+
│ └── prompts/ # 擴展問答
|
|
372
|
+
└── utils/
|
|
373
|
+
└── patch.ts # C3 行為補丁
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
### 9.3 主要套件
|
|
377
|
+
|
|
378
|
+
| 套件名稱 | 用途 |
|
|
379
|
+
|----------|------|
|
|
380
|
+
| create-cloudflare | 官方 CLI(作為依購或參考) |
|
|
381
|
+
| wrangler | Cloudflare 官方 SDK |
|
|
382
|
+
| 自定義實現 | 擴展模板和流程 |
|
|
383
|
+
|
|
384
|
+
### 9.4 優點
|
|
385
|
+
|
|
386
|
+
1. **官方相容**:自動獲得官方更新和安全修復
|
|
387
|
+
2. **生態一致**:與 Cloudflare 官方工具行為一致
|
|
388
|
+
3. **維護輕量**:核心邏輯由官方維護
|
|
389
|
+
4. **功能完整**:繼承 C3 的所有功能
|
|
390
|
+
|
|
391
|
+
### 9.5 代價
|
|
392
|
+
|
|
393
|
+
1. **耦合度高**:依賴官方工具的生命週期
|
|
394
|
+
2. **自定義受限**:只能在其框架內擴展
|
|
395
|
+
3. **學習曲線**:需要深入理解 C3 內部實現
|
|
396
|
+
4. **版本跟隨**:官方更新可能破壞自定義功能
|
|
397
|
+
|
|
398
|
+
### 9.6 主要風險
|
|
399
|
+
|
|
400
|
+
| 風險 | 影響 | 緩解措施 |
|
|
401
|
+
|------|------|----------|
|
|
402
|
+
| API 變更 | 高 | 鎖定 C3 版本 |
|
|
403
|
+
| 功能受限 | 中 | 評估擴展能力 |
|
|
404
|
+
| 除錯困難 | 中 | 封裝層隔離 |
|
|
405
|
+
|
|
406
|
+
### 9.7 不適用情境
|
|
407
|
+
|
|
408
|
+
- 需要完全自定義的用戶體驗
|
|
409
|
+
- 需要支援非 Cloudflare 官方產品
|
|
410
|
+
- 對官方工具行為不滿意
|
|
411
|
+
|
|
412
|
+
### 9.8 對應 WBS 任務
|
|
413
|
+
|
|
414
|
+
- P2-T1(CLI 入口):調用 C3 或包裝 C3
|
|
415
|
+
- P3-T2(本地模板):在 C3 模板系統上擴展
|
|
416
|
+
- P4-T1(日誌系統):可能受限於 C3 的輸出
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
## 10. 方案 C:自建輕量級 CLI 框架
|
|
421
|
+
|
|
422
|
+
### 10.1 核心思路
|
|
423
|
+
|
|
424
|
+
從零開始建立輕量級 CLI 框架:
|
|
425
|
+
- 自定義命令解析器
|
|
426
|
+
- 簡化的互動式輸入
|
|
427
|
+
- 模板系統自建
|
|
428
|
+
- 完全控制所有環節
|
|
429
|
+
|
|
430
|
+
### 10.2 技術架構
|
|
431
|
+
|
|
432
|
+
```
|
|
433
|
+
src/
|
|
434
|
+
├── index.ts
|
|
435
|
+
├── cli/
|
|
436
|
+
│ ├── parser.ts # 命令解析器
|
|
437
|
+
│ ├── runner.ts # 命令執行器
|
|
438
|
+
│ └── help.ts # 幫助生成
|
|
439
|
+
├── ui/
|
|
440
|
+
│ ├── prompt.ts # 問答實現
|
|
441
|
+
│ ├── spinner.ts # 載入指示
|
|
442
|
+
│ └── color.ts # 顏色輸出
|
|
443
|
+
├── templates/
|
|
444
|
+
│ ├── engine.ts # 模板引擎
|
|
445
|
+
│ └── loader.ts # 模板載入
|
|
446
|
+
└── utils/
|
|
447
|
+
└── fs.ts
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
### 10.3 主要套件
|
|
451
|
+
|
|
452
|
+
| 套件名稱 | 用途 |
|
|
453
|
+
|----------|------|
|
|
454
|
+
| 最小依賴 | 僅使用 Node.js 內建模組 |
|
|
455
|
+
| picocolors | 輕量級終端顏色(可選) |
|
|
456
|
+
|
|
457
|
+
### 10.4 優點
|
|
458
|
+
|
|
459
|
+
1. **零依賴**:node_modules 極小(< 100KB)
|
|
460
|
+
2. **完全控制**:無框架限制,可實現任意功能
|
|
461
|
+
3. **深度優化**:可針對特定需求極致優化
|
|
462
|
+
4. **學習價值**:深入理解 CLI 工具實現
|
|
463
|
+
|
|
464
|
+
### 10.5 代價
|
|
465
|
+
|
|
466
|
+
1. **開發成本高**:需自行實現所有基礎功能
|
|
467
|
+
2. **維護負擔**:所有 bug 修復和功能更新需自行處理
|
|
468
|
+
3. **測試負擔**:需自行測試邊界情況和兼容性
|
|
469
|
+
4. **文件缺失**:無現成文件,需自行撰寫
|
|
470
|
+
|
|
471
|
+
### 10.6 主要風險
|
|
472
|
+
|
|
473
|
+
| 風險 | 影響 | 緩解措施 |
|
|
474
|
+
|------|------|----------|
|
|
475
|
+
| 開發延遲 | 高 | 預留充足時間 |
|
|
476
|
+
| 邊界 bug | 高 | 完整測試覆蓋 |
|
|
477
|
+
| 功能缺失 | 中 | 對照現有工具 |
|
|
478
|
+
|
|
479
|
+
### 10.7 不適用情境
|
|
480
|
+
|
|
481
|
+
- 時間或資源有限
|
|
482
|
+
- 團隊缺乏 CLI 開發經驗
|
|
483
|
+
- 需要快速上線
|
|
484
|
+
- 維護資源有限
|
|
485
|
+
|
|
486
|
+
### 10.8 對應 WBS 任務
|
|
487
|
+
|
|
488
|
+
- P2-T1(CLI 入口):完全自建
|
|
489
|
+
- P2-T2(互動問答):自建或使用 readline
|
|
490
|
+
- P4-T1(日誌系統):自建實現
|
|
491
|
+
- P3-T4(模板渲染):自建簡單模板引擎
|
|
492
|
+
|
|
493
|
+
---
|
|
494
|
+
|
|
495
|
+
## 11. 方案對比與推薦決策
|
|
496
|
+
|
|
497
|
+
### 11.1 對比矩陣
|
|
498
|
+
|
|
499
|
+
| 維度 | 方案 A<br>Commander+Inquirer | 方案 B<br>基於 C3 | 方案 C<br>自建框架 |
|
|
500
|
+
|------|---------------------------|------------------|-------------------|
|
|
501
|
+
| **開發速度** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ |
|
|
502
|
+
| **維護成本** | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ |
|
|
503
|
+
| **自定義程度** | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
|
|
504
|
+
| **學習曲線** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
|
|
505
|
+
| **生態支援** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ |
|
|
506
|
+
| **套件體積** | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
|
|
507
|
+
| **長期穩定性** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
|
|
508
|
+
| **風險等級** | 低 | 中 | 高 |
|
|
509
|
+
|
|
510
|
+
### 11.2 推薦方案
|
|
511
|
+
|
|
512
|
+
**推薦:方案 A(Commander.js + Inquirer.js)**
|
|
513
|
+
|
|
514
|
+
### 11.3 推薦原因
|
|
515
|
+
|
|
516
|
+
1. **風險最低**:成熟的生態意味著較少的未知問題
|
|
517
|
+
2. **開發效率**:預計可節省 40% 的開發時間
|
|
518
|
+
3. **團隊友好**:易於理解和維護
|
|
519
|
+
4. **生產就緒**:預設就是生產級標準
|
|
520
|
+
5. **擴展靈活**:雖有框架約束,但仍有充足自定義空間
|
|
521
|
+
|
|
522
|
+
### 11.4 不推薦其他方案的原因
|
|
523
|
+
|
|
524
|
+
- **方案 B**:過度耦合官方工具,自定義空間有限,且可能受官方更新影響
|
|
525
|
+
- **方案 C**:開發成本高、風險大、維護負擔重,不適合生產環境首選
|
|
526
|
+
|
|
527
|
+
### 11.5 用戶未指定時的保守預設
|
|
528
|
+
|
|
529
|
+
若用戶沒有明確偏好,**一律採用方案 A**。
|
|
530
|
+
|
|
531
|
+
---
|
|
532
|
+
|
|
533
|
+
## 12. 實施輪廓(至少 2 套可直接採用)
|
|
534
|
+
|
|
535
|
+
### 12.1 實施輪廓 1:標準路線(推薦)
|
|
536
|
+
|
|
537
|
+
**適用條件**:通用場景,無特殊限制
|
|
538
|
+
|
|
539
|
+
**實施順序**:
|
|
540
|
+
|
|
541
|
+
| 順序 | 階段 | 主要工作 | 預期交付 |
|
|
542
|
+
|------|------|----------|----------|
|
|
543
|
+
| 1 | 基礎建設 | 專案初始化、工具鏈配置 | 可開發的專案結構 |
|
|
544
|
+
| 2 | 核心 CLI | Commander + Inquirer 整合 | 可交互的基礎 CLI |
|
|
545
|
+
| 3 | 模板系統 | 本地模板、渲染引擎 | Worker/Pages 模板可用 |
|
|
546
|
+
| 4 | 完善功能 | 日誌、配置、錯誤處理 | 生產級功能完整 |
|
|
547
|
+
| 5 | 測試品質 | 單元測試、整合測試 | Coverage >= 80% |
|
|
548
|
+
| 6 | 發布就緒 | 文件、CI/CD、發布 | npm 套件上線 |
|
|
549
|
+
|
|
550
|
+
**前置工作**:
|
|
551
|
+
- 確認專案名稱
|
|
552
|
+
- 確認 npm 組織/發布帳號
|
|
553
|
+
- 準備 Git 倉庫
|
|
554
|
+
|
|
555
|
+
**預期交付**:
|
|
556
|
+
- 生產級 CLI 工具
|
|
557
|
+
- 完整的測試覆蓋
|
|
558
|
+
- 完善的文件
|
|
559
|
+
- npm 可安裝套件
|
|
560
|
+
|
|
561
|
+
### 12.2 實施輪廓 2:精簡路線(MVP 優先)
|
|
562
|
+
|
|
563
|
+
**適用條件**:需要快速驗證概念,後續迭代完善
|
|
564
|
+
|
|
565
|
+
**實施順序**:
|
|
566
|
+
|
|
567
|
+
| 順序 | 階段 | 主要工作 | 預期交付 |
|
|
568
|
+
|------|------|----------|----------|
|
|
569
|
+
| 1 | 快速原型 | 最小可行 CLI | 能創建 Worker 專案 |
|
|
570
|
+
| 2 | 核心功能 | 基本問答、檔案生成 | Worker/Pages 支援 |
|
|
571
|
+
| 3 | 品質閘門 | 基礎測試、Lint | 無編譯錯誤 |
|
|
572
|
+
| 4 | 發布 MVP | README、npm 發布 | 可用版本上線 |
|
|
573
|
+
| 5 | 迭代增強 | 高級功能、更多模板 | 功能逐步完善 |
|
|
574
|
+
| 6 | 品質提升 | 完整測試、文件 | 生產級標準 |
|
|
575
|
+
|
|
576
|
+
**前置工作**:
|
|
577
|
+
- 定義 MVP 範圍(僅 Worker 模板)
|
|
578
|
+
- 準備最小可運作環境
|
|
579
|
+
|
|
580
|
+
**預期交付**:
|
|
581
|
+
- MVP 版本 CLI(Week 1-2)
|
|
582
|
+
- 完整版本(Week 4-6)
|
|
583
|
+
|
|
584
|
+
---
|
|
585
|
+
|
|
586
|
+
## 13. 需要主 agent 回問用戶的事項
|
|
587
|
+
|
|
588
|
+
### 13.1 高優先級問題
|
|
589
|
+
|
|
590
|
+
| 問題 | 為什麼要問 | 不問時的保守預設 |
|
|
591
|
+
|------|-----------|------------------|
|
|
592
|
+
| **CLI 工具的確切名稱?** | 影響 package.json name、bin 欄位、npm 發布 | `create-cf-project` |
|
|
593
|
+
| **預設支援哪些專案類型?** | 影響模板設計和問答流程 | Worker、Pages、D1、KV |
|
|
594
|
+
| **是否需要國際化支援?** | 影響 UI 文字和錯誤訊息設計 | 僅繁體中文 + 英文錯誤 |
|
|
595
|
+
| **預期的 Node.js 最低版本?** | 影響語法選擇和依賴版本 | v18 LTS |
|
|
596
|
+
|
|
597
|
+
### 13.2 中優先級問題
|
|
598
|
+
|
|
599
|
+
| 問題 | 為什麼要問 | 不問時的保守預設 |
|
|
600
|
+
|------|-----------|------------------|
|
|
601
|
+
| **是否支援遠端模板?** | 影響模板系統架構 | 先本地,遠端作為擴充 |
|
|
602
|
+
| **是否需要插件系統?** | 影響核心架構設計 | 第一版不支援 |
|
|
603
|
+
| **CI/CD 平台偏好?** | 影響 DevOps 配置 | GitHub Actions |
|
|
604
|
+
| **是否開源?** | 影響許可證和倉庫設定 | 開源(MIT) |
|
|
605
|
+
|
|
606
|
+
### 13.3 建議
|
|
607
|
+
|
|
608
|
+
**建議主 agent 在進入實作前,至少確認高優先級問題**,以避免後續大規模重構。
|
|
609
|
+
|
|
610
|
+
---
|
|
611
|
+
|
|
612
|
+
## 14. 風險、回滾與阻塞訊號
|
|
613
|
+
|
|
614
|
+
### 14.1 風險清單
|
|
615
|
+
|
|
616
|
+
| 風險 ID | 風險描述 | 機率 | 影響 | 緩解策略 |
|
|
617
|
+
|---------|----------|------|------|----------|
|
|
618
|
+
| R1 | 套件版本相容性問題 | 中 | 中 | 鎖定版本範圍、定期更新測試 |
|
|
619
|
+
| R2 | Cloudflare API 變更 | 低 | 高 | 追蹤官方更新、抽象 API 層 |
|
|
620
|
+
| R3 | 模板維護負擔 | 中 | 中 | 建立模板更新流程、版本管理 |
|
|
621
|
+
| R4 | 用戶環境差異(Windows/Linux/macOS) | 中 | 中 | CI 多平台測試 |
|
|
622
|
+
| R5 | 命名衝突或商標問題 | 低 | 高 | 確認 npm 名稱可用性 |
|
|
623
|
+
| R6 | 開發時程延遲 | 中 | 中 | 分階段交付、MVP 優先 |
|
|
624
|
+
|
|
625
|
+
### 14.2 回滾策略
|
|
626
|
+
|
|
627
|
+
| 情境 | 回滾動作 |
|
|
628
|
+
|------|----------|
|
|
629
|
+
| 套件選型錯誤 | 重構到方案 B 或 C,評估成本後決策 |
|
|
630
|
+
| 架構設計問題 | 保留 interface,重構實現 |
|
|
631
|
+
| 模板系統問題 | 回退到簡單的字串替換 |
|
|
632
|
+
| npm 發布問題 | 撤回版本、修復後重新發布 |
|
|
633
|
+
|
|
634
|
+
### 14.3 阻塞訊號
|
|
635
|
+
|
|
636
|
+
出現以下情況應立即停止並回報:
|
|
637
|
+
|
|
638
|
+
- 🚫 **阻塞**:npm 套件名稱不可用或侵權
|
|
639
|
+
- 🚫 **阻塞**:Cloudflare CLI 連接失效
|
|
640
|
+
- ⚠️ **警告**:核心依賴套件發布棄用聲明
|
|
641
|
+
- ⚠️ **警告**:測試覆蓋率持續無法達標
|
|
642
|
+
|
|
643
|
+
---
|
|
644
|
+
|
|
645
|
+
## 15. 對映到 todos.md 的執行批次
|
|
646
|
+
|
|
647
|
+
### 15.1 建議的 todos.md 結構
|
|
648
|
+
|
|
649
|
+
```markdown
|
|
650
|
+
# Cloudflare CLI 工具開發任務
|
|
651
|
+
|
|
652
|
+
## Phase 1: 專案基礎建設
|
|
653
|
+
- [ ] P1-T1: 專案初始化與配置
|
|
654
|
+
- [ ] P1-T2: ESLint + Prettier 配置
|
|
655
|
+
- [ ] P1-T3: Git 倉庫初始化
|
|
656
|
+
- [ ] P1-T4: 開發環境配置
|
|
657
|
+
|
|
658
|
+
## Phase 2: 核心模組開發
|
|
659
|
+
- [ ] P2-T1: CLI 入口與命令註冊 (Commander.js)
|
|
660
|
+
- [ ] P2-T2: 互動式問答模組 (Inquirer.js)
|
|
661
|
+
- [ ] P2-T3: 專案配置解析
|
|
662
|
+
- [ ] P2-T4: 檔案系統操作
|
|
663
|
+
|
|
664
|
+
## Phase 3: 模板系統
|
|
665
|
+
- [ ] P3-T1: 模板引擎設計
|
|
666
|
+
- [ ] P3-T2: 本地模板實現 (Worker/Pages)
|
|
667
|
+
- [ ] P3-T3: 遠端模板支援 (Git)
|
|
668
|
+
- [ ] P3-T4: 模板渲染引擎 (Mustache)
|
|
669
|
+
|
|
670
|
+
## Phase 4: 日誌與配置
|
|
671
|
+
- [ ] P4-T1: 日誌系統設計 (Chalk + Ora)
|
|
672
|
+
- [ ] P4-T2: 進度指示器
|
|
673
|
+
- [ ] P4-T3: 全局配置管理
|
|
674
|
+
- [ ] P4-T4: 錯誤處理與報告
|
|
675
|
+
|
|
676
|
+
## Phase 5: 測試與品質
|
|
677
|
+
- [ ] P5-T1: 單元測試框架 (Vitest)
|
|
678
|
+
- [ ] P5-T2: 核心邏輯測試
|
|
679
|
+
- [ ] P5-T3: 整合測試 (E2E)
|
|
680
|
+
- [ ] P5-T4: 測試覆蓋率報告
|
|
681
|
+
|
|
682
|
+
## Phase 6: 發布與文件
|
|
683
|
+
- [ ] P6-T1: README 撰寫
|
|
684
|
+
- [ ] P6-T2: API 文件 (TypeDoc)
|
|
685
|
+
- [ ] P6-T3: CHANGELOG 機制
|
|
686
|
+
- [ ] P6-T4: CI/CD 配置 (GitHub Actions)
|
|
687
|
+
- [ ] P6-T5: npm 發布
|
|
688
|
+
|
|
689
|
+
## 里程碑
|
|
690
|
+
- [ ] M1: 基礎就緒
|
|
691
|
+
- [ ] M2: 核心可用
|
|
692
|
+
- [ ] M3: 模板完成
|
|
693
|
+
- [ ] M4: 品質達標
|
|
694
|
+
- [ ] M5: 發布就緒
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
### 15.2 執行批次建議
|
|
698
|
+
|
|
699
|
+
| 批次 | 任務 | 估計工時 | 負責角色 |
|
|
700
|
+
|------|------|----------|----------|
|
|
701
|
+
| Batch 1 | P1 全部 + P2-T1 | 6h | 架構師/開發者 |
|
|
702
|
+
| Batch 2 | P2-T2 ~ P2-T4 | 10h | 開發者 |
|
|
703
|
+
| Batch 3 | P3 全部 | 14h | 開發者 |
|
|
704
|
+
| Batch 4 | P4 全部 | 11h | 開發者 |
|
|
705
|
+
| Batch 5 | P5 全部 | 14h | 測試工程師 |
|
|
706
|
+
| Batch 6 | P6 全部 | 10h | 技術寫手/DevOps |
|
|
707
|
+
|
|
708
|
+
---
|
|
709
|
+
|
|
710
|
+
## 16. 文件同步規則
|
|
711
|
+
|
|
712
|
+
### 16.1 同步機制
|
|
713
|
+
|
|
714
|
+
| 來源文件 | 同步目標 | 同步時機 | 規則 |
|
|
715
|
+
|----------|----------|----------|------|
|
|
716
|
+
| deep_todos.md | todos.md | 每次決策變更 | WBS 任務同步 |
|
|
717
|
+
| deep_todos.md | 技術文件 | 方案確定後 | 架構決策同步 |
|
|
718
|
+
| todos.md | deep_todos.md | 進度更新時 | 里程碑狀態同步 |
|
|
719
|
+
|
|
720
|
+
### 16.2 版本控制
|
|
721
|
+
|
|
722
|
+
- 本文件版本:`v1.0.0`
|
|
723
|
+
- 建立日期:2025-04-09
|
|
724
|
+
- 更新日誌:記錄於文件底部
|
|
725
|
+
|
|
726
|
+
### 16.3 更新權限
|
|
727
|
+
|
|
728
|
+
| 章節 | 可更新角色 | 備註 |
|
|
729
|
+
|------|-----------|------|
|
|
730
|
+
| 0-2(摘要、決策、背景) | 主 agent、規劃師 | 需用戶確認 |
|
|
731
|
+
| 3-7(範圍、約束、驗收、WBS、里程碑) | 規劃師 | 依需求變更更新 |
|
|
732
|
+
| 8-12(方案、對比、實施) | 規劃師、架構師 | 技術決策變更時更新 |
|
|
733
|
+
| 13-16(回問、風險、批次、同步) | 任何 subagent | 發現新資訊時更新 |
|
|
734
|
+
|
|
735
|
+
---
|
|
736
|
+
|
|
737
|
+
## 附錄 A:技術參考
|
|
738
|
+
|
|
739
|
+
### A.1 參考專案
|
|
740
|
+
|
|
741
|
+
| 專案名稱 | 用途 | 連結 |
|
|
742
|
+
|----------|------|------|
|
|
743
|
+
| create-cloudflare | 官方 CLI | https://github.com/cloudflare/workers-sdk/tree/main/packages/create-cloudflare |
|
|
744
|
+
| create-next-app | 參考架構 | https://github.com/vercel/next.js/tree/canary/packages/create-next-app |
|
|
745
|
+
| commander.js | CLI 框架 | https://github.com/tj/commander.js |
|
|
746
|
+
| inquirer.js | 互動問答 | https://github.com/SBoudrias/Inquirer.js |
|
|
747
|
+
|
|
748
|
+
### A.2 命名建議
|
|
749
|
+
|
|
750
|
+
| 名稱類型 | 建議名稱 | 備註 |
|
|
751
|
+
|----------|----------|------|
|
|
752
|
+
| 套件名稱 | `create-cf-project` | 遵循 `create-*` 慣例 |
|
|
753
|
+
| bin 命令 | `create-cf-project` | 與套件名一致 |
|
|
754
|
+
| 縮寫別名 | `cf-create` | 可選快捷命令 |
|
|
755
|
+
|
|
756
|
+
---
|
|
757
|
+
|
|
758
|
+
## 更新日誌
|
|
759
|
+
|
|
760
|
+
| 版本 | 日期 | 變更內容 | 作者 |
|
|
761
|
+
|------|------|----------|------|
|
|
762
|
+
| v1.0.0 | 2025-04-09 | 初次建立,包含完整規劃結構與三個方案分析 | Deep Todos |
|
|
763
|
+
|
|
764
|
+
---
|
|
765
|
+
|
|
766
|
+
*本文件由 Deep Todos 規劃 subagent 建立,遵循 AGENTS.md 規範與 deep_todos.template.md 模板結構。*
|