206 lines
5.2 KiB
Markdown
206 lines
5.2 KiB
Markdown
# LagZero 目录结构
|
|
|
|
## 1. 说明
|
|
|
|
下面的目录树是面向开发的精简版,省略了以下内容:
|
|
|
|
- 构建产物:`dist/`、`dist-electron/`、`release/`
|
|
- 依赖目录:`node_modules/`
|
|
- 本地 AI/IDE 辅助目录:`.agent/`、`.agents/`、`.codex/`、`.qoder/`、`.trae/`
|
|
|
|
## 2. 目录树
|
|
|
|
```text
|
|
LagZero
|
|
├─ docs/
|
|
├─ docImages/
|
|
├─ electron/
|
|
│ ├─ common/
|
|
│ │ └─ store.ts
|
|
│ ├─ db/
|
|
│ │ └─ schema.ts
|
|
│ ├─ main/
|
|
│ │ ├─ bootstrap.ts
|
|
│ │ ├─ index.ts
|
|
│ │ ├─ logger.ts
|
|
│ │ ├─ tray.ts
|
|
│ │ └─ window.ts
|
|
│ ├─ preload/
|
|
│ │ └─ index.ts
|
|
│ ├─ services/
|
|
│ │ ├─ scanners/
|
|
│ │ │ ├─ battlenet.ts
|
|
│ │ │ ├─ ea.ts
|
|
│ │ │ ├─ epic.ts
|
|
│ │ │ ├─ local.ts
|
|
│ │ │ ├─ microsoft.ts
|
|
│ │ │ ├─ steam.ts
|
|
│ │ │ ├─ types.ts
|
|
│ │ │ ├─ utils.ts
|
|
│ │ │ └─ wegame.ts
|
|
│ │ ├─ singbox/
|
|
│ │ │ ├─ config.ts
|
|
│ │ │ ├─ constants.ts
|
|
│ │ │ ├─ index.ts
|
|
│ │ │ ├─ installer.ts
|
|
│ │ │ └─ utils.ts
|
|
│ │ ├─ category.ts
|
|
│ │ ├─ database.ts
|
|
│ │ ├─ game-scanner.ts
|
|
│ │ ├─ game.ts
|
|
│ │ ├─ node.ts
|
|
│ │ ├─ process.ts
|
|
│ │ ├─ proxy-monitor.ts
|
|
│ │ ├─ system.ts
|
|
│ │ └─ updater.ts
|
|
│ └─ utils/
|
|
│ ├─ command.ts
|
|
│ ├─ id.ts
|
|
│ ├─ ping.ts
|
|
│ └─ port.ts
|
|
├─ public/
|
|
│ ├─ logo.ico
|
|
│ ├─ logo.png
|
|
│ └─ logo.svg
|
|
├─ shared/
|
|
│ ├─ types/
|
|
│ │ ├─ category.ts
|
|
│ │ ├─ game.ts
|
|
│ │ ├─ index.ts
|
|
│ │ ├─ node.ts
|
|
│ │ ├─ settings.ts
|
|
│ │ └─ singbox.ts
|
|
│ └─ utils/
|
|
│ ├─ format.ts
|
|
│ ├─ index.ts
|
|
│ ├─ ipc-safe.ts
|
|
│ ├─ node-key.ts
|
|
│ ├─ process-name.ts
|
|
│ └─ sleep.ts
|
|
├─ src/
|
|
│ ├─ api/
|
|
│ ├─ assets/
|
|
│ ├─ autoImport/
|
|
│ ├─ components/
|
|
│ │ ├─ common/
|
|
│ │ ├─ dashboard/
|
|
│ │ ├─ library/
|
|
│ │ ├─ node/
|
|
│ │ ├─ settings/
|
|
│ │ └─ singbox/
|
|
│ ├─ composables/
|
|
│ ├─ constants/
|
|
│ ├─ layouts/
|
|
│ ├─ locales/
|
|
│ ├─ router/
|
|
│ ├─ stores/
|
|
│ ├─ types/
|
|
│ ├─ utils/
|
|
│ ├─ views/
|
|
│ │ ├─ dashboard/
|
|
│ │ ├─ library/
|
|
│ │ ├─ nodes/
|
|
│ │ ├─ settings/
|
|
│ │ └─ tray/
|
|
│ ├─ App.vue
|
|
│ ├─ i18n.ts
|
|
│ └─ main.ts
|
|
├─ tests/
|
|
│ └─ unit/
|
|
├─ package.json
|
|
├─ README.md
|
|
├─ uno.config.ts
|
|
├─ vite.config.ts
|
|
└─ vitest.config.ts
|
|
```
|
|
|
|
## 3. 关键目录职责
|
|
|
|
### `electron/`
|
|
|
|
Electron 主进程代码。这里负责:
|
|
|
|
- 应用启动与窗口生命周期
|
|
- 托盘窗口与主窗口通信
|
|
- IPC 注册
|
|
- 数据库存取
|
|
- 游戏扫描
|
|
- 系统命令、系统代理、TUN 与 DNS 控制
|
|
- sing-box 的安装、启动、停止、重启与日志转发
|
|
|
|
### `shared/`
|
|
|
|
跨进程共享层。这里应该只放“纯 TypeScript”代码:
|
|
|
|
- 公共类型
|
|
- 字符串/对象/数组等纯工具函数
|
|
- 进程名规范化、节点 key 计算、IPC 安全快照转换
|
|
|
|
如果一个文件需要同时在 `src/` 和 `electron/` 使用,优先考虑放到这里。
|
|
|
|
### `src/`
|
|
|
|
Vue 渲染进程代码。这里负责:
|
|
|
|
- 页面和组件
|
|
- Pinia 状态管理
|
|
- 路由组织
|
|
- i18n、多主题、样式
|
|
- sing-box 配置生成
|
|
- 通过 `src/api/` 调用 preload 暴露的主进程能力
|
|
|
|
### `tests/unit/`
|
|
|
|
Vitest 单元测试目录,当前重点覆盖:
|
|
|
|
- 配置生成
|
|
- 扫描工具
|
|
- 协议解析
|
|
- 代理监控
|
|
- UI 主题和局部业务逻辑
|
|
|
|
## 4. 重点文件速查
|
|
|
|
| 文件 | 作用 |
|
|
| --- | --- |
|
|
| `electron/main/index.ts` | 主进程总入口,服务实例化和 IPC 汇总注册 |
|
|
| `electron/preload/index.ts` | ContextBridge 暴露层,定义 `window.*` API |
|
|
| `src/main.ts` | 渲染进程入口,挂载 router/pinia/i18n,并处理主窗口初始化逻辑 |
|
|
| `src/router/index.ts` | 主窗口与托盘窗口路由定义 |
|
|
| `src/stores/games.ts` | 游戏加速主流程入口 |
|
|
| `src/stores/nodes.ts` | 节点管理、测速、订阅刷新与导入导出 |
|
|
| `src/stores/local-proxy.ts` | 本地代理自动选点、健康检查与自动恢复 |
|
|
| `src/stores/settings.ts` | 绝大多数设置项的持久化来源 |
|
|
| `src/utils/singbox-config.ts` | sing-box 配置生成核心 |
|
|
| `electron/services/database.ts` | SQLite 与业务数据落库核心 |
|
|
|
|
## 5. 推荐阅读顺序
|
|
|
|
### 想看应用怎么启动
|
|
|
|
1. `electron/main/index.ts`
|
|
2. `electron/main/window.ts`
|
|
3. `electron/preload/index.ts`
|
|
4. `src/main.ts`
|
|
|
|
### 想看加速链路怎么跑通
|
|
|
|
1. `src/views/dashboard/index.vue`
|
|
2. `src/stores/games.ts`
|
|
3. `src/utils/singbox-config.ts`
|
|
4. `electron/services/singbox/index.ts`
|
|
5. `electron/services/proxy-monitor.ts`
|
|
|
|
### 想看节点与订阅
|
|
|
|
1. `src/views/nodes/index.vue`
|
|
2. `src/stores/nodes.ts`
|
|
3. `electron/services/node.ts`
|
|
4. `electron/services/database.ts`
|
|
|
|
### 想看游戏扫描
|
|
|
|
1. `src/composables/useGameScanner.ts`
|
|
2. `electron/services/game-scanner.ts`
|
|
3. `electron/services/scanners/*.ts`
|