apps/desktop/README.zh-CN.md
LobeHub Desktop 是 LobeHub 的跨平台桌面应用程序,使用 Electron 构建,提供了更加原生的桌面体验和功能。
# 安装依赖
pnpm install-isolated
# 启动开发服务器
pnpm dev
# 类型检查
pnpm type-check
# 运行测试
pnpm test
复制 .env.desktop 到 .env 并根据需要配置:
cp .env.desktop .env
[!WARNING] 在进行更改之前请备份您的
.env文件,避免丢失配置。
| 命令 | 描述 |
|---|---|
pnpm build:main | 构建 main/preload(仅产出 dist) |
pnpm package:mac | 打包 macOS (Intel + Apple Silicon) |
pnpm package:win | 打包 Windows |
pnpm package:linux | 打包 Linux |
pnpm package:local | 本地打包(不打 ASAR) |
pnpm package:local:reuse | 本地打包复用已有 dist |
# 1. 开发
pnpm dev # 启动热重载开发服务器
# 2. 代码质量
pnpm lint # ESLint 检查
pnpm format # Prettier 格式化
pnpm type-check # TypeScript 验证
# 3. 测试
pnpm test # 运行 Vitest 测试
# 4. 构建和打包
pnpm build:main # 生产构建(仅 dist)
pnpm package:local # 本地测试打包
| 渠道 | 描述 | 稳定性 | 自动更新 |
|---|---|---|---|
| 稳定版 | 经过充分测试的正式版本 | 🟢 高 | ✅ 是 |
| 测试版 (Beta) | 包含新功能的预发布版本 | 🟡 中 | ✅ 是 |
| 每日构建版 (Nightly) | 包含最新更改的每日构建 | 🟠 低 | ✅ 是 |
37.1.0 - 跨平台桌面框架22+ - 后端运行时5.7+ - 类型安全开发6.2+ - 构建工具桌面应用程序采用了复杂的依赖注入和事件驱动架构:
src/main/core/
├── App.ts # 🎯 主应用程序协调器
├── IoCContainer.ts # 🔌 依赖注入容器
├── window/ # 🪟 窗口管理模块
│ ├── WindowThemeManager.ts # 🎨 主题同步
│ ├── WindowPositionManager.ts # 📐 位置持久化
│ ├── WindowErrorHandler.ts # ⚠️ 错误边界
│ └── WindowConfigBuilder.ts # ⚙️ 配置构建器
├── browser/ # 🌐 浏览器管理模块
│ ├── Browser.ts # 🪟 单个窗口实例
│ └── BrowserManager.ts # 👥 多窗口协调器
├── ui/ # 🎨 UI 系统模块
│ ├── Tray.ts # 📍 系统托盘集成
│ ├── TrayManager.ts # 🔧 托盘管理
│ ├── MenuManager.ts # 📋 原生菜单系统
│ └── ShortcutManager.ts # ⌨️ 全局快捷键
└── infrastructure/ # 🔧 基础设施服务
├── StoreManager.ts # 💾 配置存储
├── I18nManager.ts # 🌍 国际化
├── UpdaterManager.ts # 📦 自动更新系统
└── StaticFileServerManager.ts # 🗂️ 本地文件服务
App.ts 类通过几个关键阶段协调整个应用程序的生命周期:
@IpcMethod 装饰器beforeAppReady 和 afterAppReady渲染端通过 src/utils/electron/ipc.ts 提供的 ensureElectronIpc 获得一个运行时代理,无需在 preload 中暴露 Proxy 对象即可获得类型安全的调用体验:
import { ensureElectronIpc } from '@/utils/electron/ipc';
const ipc = ensureElectronIpc();
await ipc.windows.openSettingsWindow({ tab: 'provider' });
apps/desktop/src/main/controllers/__tests__/ # 控制器单元测试
tests/ # 集成测试
pnpm test # 运行所有测试
pnpm test:watch # 监视模式
pnpm type-check # 类型验证
桌面应用程序开发涉及复杂的跨平台考虑和原生集成。我们欢迎社区贡献来改进功能、性能和用户体验。您可以通过以下方式参与改进:
Development.md - 全面的开发文档/docs - 详细的技术规范CONTRIBUTING.md - 贡献指导