📋 背景
Phase 1 死代碼分析已完成(commit 22dd3dca),識別了 26 個未使用檔案、100+ 未使用導出、9 個未使用依賴。
分析報告:
.reports/dead-code-analysis.md (完整分析)
.reports/cleanup-summary.md (執行摘要)
Phase 1 完成項目: ✅
- 新增缺失測試依賴 (vitest, xml2js)
- 生成完整分析報告
- 所有測試通過 (1904/1904)
🎯 Phase 2: 依賴清理 (Medium Risk)
待驗證的未使用依賴
Root package.json:
{
"@changesets/changelog-github": "用於 changeset 格式化",
"@playwright/test": "E2E 測試框架",
"@vitejs/plugin-react-swc": "Vite React 插件",
"@vitest/coverage-v8": "測試覆蓋率工具",
"vite-ssg-sitemap": "SSG sitemap 生成器"
}
apps/ratewise/package.json:
{
"lighthouse": "效能測試工具",
"workbox-*": "7 個 Service Worker 套件",
"zustand": "狀態管理(未使用)"
}
任務清單
風險評估: 🟡 Medium - 可能影響 CI/CD 流程
🎯 Phase 3: 未使用導出清理 (Low-Medium Risk)
安全刪除候選
1. Workspace 工具函數:
// scripts/lib/workspace-utils.mjs
export const getSSGApps // ❌ 未使用
export const validateAppConfig // ❌ 未使用
2. SEO 配置導出:
// apps/*/seo-paths.config.mjs
export const SEO_FILES // ❌ 未使用
export const normalizePath // ❌ 未使用
export const shouldPrerender // ❌ 未使用
export const getIncludedRoutes // ❌ 未使用
export const APP_CONFIG // ❌ 未使用
3. 數據檔案:
// apps/nihonname/src/constants.ts
export const SURNAME_DATA_FULL // ❌ 未使用
export const getSurnameDetail // ❌ 未使用
export const getFunnyNamesByCategory // ❌ 未使用
// ... 8 個未使用導出
// apps/nihonname/src/data/funnyNames.ts
// 40+ 個未使用的 pun 類別導出
4. JSON-LD Schema:
// apps/quake-school/src/seo/jsonld.ts
export const courseSchema // ❌ 未使用
export const quizSchema // ❌ 未使用
// apps/nihonname/src/seo/jsonld.ts
export const buildImageObjectSchema // ❌ 未使用
任務清單
風險評估: 🟢 Low-Medium - 需驗證無隱藏引用
🎯 Phase 4: 元件導出標準化 (High Risk)
重複導出模式
17 個元件同時有命名和默認導出:
// 當前模式
export const ComponentName = () => { /* ... */ }
export default ComponentName; // ❌ 重複
// 需要標準化為
export default function ComponentName() { /* ... */ }
// 或
export const ComponentName = () => { /* ... */ }
受影響元件:
- quake-school: 1 個
- nihonname: 11 個
- ratewise: 12 個
- haotool: 4 個
任務清單
風險評估: 🔴 High - 需要大量 import 更新 + 完整回歸測試
⚠️ Service Worker 測試腳本審查
檔案: apps/ratewise/scripts/test-*-sw*.mjs (9 個)
狀態: 🔶 保留 (建立於 2026-01-11, < 1 個月)
任務清單
📊 預期影響
Phase 2 (依賴清理)
- 移除 9-15 個未使用依賴
- 減少 node_modules 大小約 50-100MB
- 加快 CI/CD 安裝速度
Phase 3 (導出清理)
- 清理 100+ 個未使用導出
- 減少程式碼行數約 500-1000 行
- 改善 tree-shaking 效果
Phase 4 (元件標準化)
- 統一 17 個元件導出方式
- 改善程式碼一致性
- 更新約 50-100 個 import 語句
✅ 完成標準
每個 Phase 必須達成:
📅 建議時程
- Phase 2: 本週完成(依賴驗證 + 移除)
- Phase 3: 下週完成(導出清理)
- Phase 4: 下 Sprint(元件標準化 + 完整測試)
- SW 腳本審查: 2026-05-08
📚 參考文檔
🔧 工具
已安裝分析工具:
pnpm knip # 未使用檔案和導出
pnpm depcheck # 未使用依賴
pnpm ts-prune # TypeScript 未使用導出(需修復 tsconfig)
建議工具:
- AST-based 重構工具 (jscodeshift)
- 自動化 import 更新 (ts-morph)
- Dependency graph visualizer
⚠️ 注意事項
- 測試優先: 每次清理前後都要執行完整測試
- 漸進式: 小批次清理,易於回滾
- 獨立 Commit: 每個 Phase 或每批清理獨立提交
- CI/CD 驗證: 推送後確認 CI 通過
- 文檔同步: 更新 CHANGELOG 和相關文檔
- 團隊溝通: 清理前通知團隊,避免衝突
Created by: refactor-clean skill
Related: Phase 1 完成於 commit 22dd3dca
📋 背景
Phase 1 死代碼分析已完成(commit
22dd3dca),識別了 26 個未使用檔案、100+ 未使用導出、9 個未使用依賴。分析報告:
.reports/dead-code-analysis.md(完整分析).reports/cleanup-summary.md(執行摘要)Phase 1 完成項目: ✅
🎯 Phase 2: 依賴清理 (Medium Risk)
待驗證的未使用依賴
Root package.json:
{ "@changesets/changelog-github": "用於 changeset 格式化", "@playwright/test": "E2E 測試框架", "@vitejs/plugin-react-swc": "Vite React 插件", "@vitest/coverage-v8": "測試覆蓋率工具", "vite-ssg-sitemap": "SSG sitemap 生成器" }apps/ratewise/package.json:
{ "lighthouse": "效能測試工具", "workbox-*": "7 個 Service Worker 套件", "zustand": "狀態管理(未使用)" }任務清單
.github/workflows/*.yml中的依賴引用package.jsonscripts 中的依賴引用workbox-*是否被 Service Worker 使用zustand是否為計畫中的功能風險評估: 🟡 Medium - 可能影響 CI/CD 流程
🎯 Phase 3: 未使用導出清理 (Low-Medium Risk)
安全刪除候選
1. Workspace 工具函數:
2. SEO 配置導出:
3. 數據檔案:
4. JSON-LD Schema:
任務清單
rg搜索每個導出的引用情況風險評估: 🟢 Low-Medium - 需驗證無隱藏引用
🎯 Phase 4: 元件導出標準化 (High Risk)
重複導出模式
17 個元件同時有命名和默認導出:
受影響元件:
任務清單
風險評估: 🔴 High - 需要大量 import 更新 + 完整回歸測試
檔案:
apps/ratewise/scripts/test-*-sw*.mjs(9 個)狀態: 🔶 保留 (建立於 2026-01-11, < 1 個月)
任務清單
📊 預期影響
Phase 2 (依賴清理)
Phase 3 (導出清理)
Phase 4 (元件標準化)
✅ 完成標準
每個 Phase 必須達成:
📅 建議時程
📚 參考文檔
🔧 工具
已安裝分析工具:
建議工具:
Created by: refactor-clean skill
Related: Phase 1 完成於 commit
22dd3dca