Skip to content

Development

xingranya edited this page Jul 9, 2026 · 1 revision

开发指南

环境要求

依赖 版本
Node.js >= 24
pnpm >= 11
Rust 最新稳定版
SQLite 3
macOS Xcode Command Line Tools

克隆与安装

git clone https://github.com/xingranya/GitHub-Stars-AI-Tools.git
cd GitHub-Stars-AI-Tools
COREPACK_HOME="$PWD/.corepack" pnpm install

启动开发

# 启动完整桌面应用(推荐日常开发)
COREPACK_HOME="$PWD/.corepack" pnpm tauri dev

# 仅启动前端开发服务器(无桌面能力)
COREPACK_HOME="$PWD/.corepack" pnpm dev

构建

# 构建共享包
COREPACK_HOME="$PWD/.corepack" pnpm build:packages

# 构建桌面应用
COREPACK_HOME="$PWD/.corepack" pnpm build

# 生成安装包
COREPACK_HOME="$PWD/.corepack" pnpm tauri build

提交前检查

# 1. 构建共享包
COREPACK_HOME="$PWD/.corepack" pnpm build:packages

# 2. 构建前端
COREPACK_HOME="$PWD/.corepack" pnpm build

# 3. Rust 格式检查
cargo fmt --manifest-path "$PWD/apps/desktop/src-tauri/Cargo.toml" --check

# 4. Rust 编译检查
cargo check --manifest-path "$PWD/apps/desktop/src-tauri/Cargo.toml"

项目结构

apps/desktop/              # Tauri 桌面应用
  src/                     # React 前端
    features/              # 功能模块:repositories、knowledge、sidebar
  src-tauri/               # Rust 后端
    src/
      lib.rs               # Tauri 命令注册
      auth.rs              # GitHub Token 存储
      github.rs            # GitHub API 调用
      storage.rs           # SQLite 操作
packages/domain/           # TypeScript 领域类型定义
packages/storage/          # SQLite Schema 与迁移
  migrations/              # SQL Schema 文件
packages/github/           # GitHub API 边界
packages/ai/               # AI Provider 抽象
packages/search/           # 搜索 DSL
packages/worker/           # 同步与任务编排

修改指南

修改前端代码

  • 代码位于 apps/desktop/src/
  • 修改后通过 pnpm tauri dev 实时预览(热重载)
  • TypeScript 类型错误会在 pnpm build 时暴露

修改 Rust 后端

  • 代码位于 apps/desktop/src-tauri/src/
  • 修改后运行 cargo check 验证编译
  • 修改 Tauri 命令签名时,需同步更新前端调用代码

修改共享包

  • 代码位于 packages/*/src/
  • 修改后必须运行 pnpm build:packages 重新构建
  • packages/domain 的类型定义是前后端契约,变更需谨慎

修改数据库 Schema

  1. packages/storage/migrations/ 下新建 .sql 文件(序号递增)
  2. 更新 apps/desktop/src-tauri/src/storage.rs 的必需表字段检测
  3. 更新 packages/domain/src/index.ts 中的相关类型定义
  4. 运行 pnpm buildcargo check 验证

Rust 缓存清理

如果编译报错提示旧路径或依赖冲突:

cargo clean --manifest-path "$PWD/apps/desktop/src-tauri/Cargo.toml"
cargo check --manifest-path "$PWD/apps/desktop/src-tauri/Cargo.toml"

Clone this wiki locally