Files
LagZero/docs/project-structure.md

5.2 KiB

LagZero 目录结构

1. 说明

下面的目录树是面向开发的精简版,省略了以下内容:

  • 构建产物:dist/、dist-electron/、release/
  • 依赖目录:node_modules/
  • 本地 AI/IDE 辅助目录:.agent/、.agents/、.codex/、.qoder/、.trae/

2. 目录树

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