一个基于 Tauri v2 + React + Vite 的桌面小工具宿主,支持通过 plugins/ 目录加载/打包内置插件。
插件分发仓库(只放 index.json + Release assets):
插件发布页(下载 ZIP 的地方):
商店索引(宿主默认内置的 index 地址):
- Node.js(建议 18+)
- pnpm(项目声明:
pnpm@10) - Rust stable + Cargo
- Windows 开发:需要 MSVC 工具链(Visual Studio Build Tools)
- Tauri v2 相关依赖:由
@tauri-apps/cli驱动(通过脚本调用)
面向使用者安装:请直接从 Release 下载并运行安装包/可执行文件:
如需本地开发,请看下面的「开发」。
安装依赖:
pnpm install仅前端(浏览器预览):
pnpm dev桌面端(Tauri Dev,推荐):
pnpm tauri dev说明:
pnpm tauri dev会自动启动pnpm plugins:watch:插件源码改动会自动打包输出到manifest.main指向的单文件入口(必要时在 App 内点“刷新插件”以重新加载)。pnpm tauri build ...会构建宿主本体(不再随包预置任何插件)。- 可选:设置
FAST_WINDOW_PLUGIN=<pluginId>可只构建/监听某一个插件,避免插件很多时启动变慢。 - Tauri 配置在
src-tauri/tauri.conf.json。 - 当前
tauri.conf.json的beforeDevCommand/beforeBuildCommand配置为npm run dev/build(确保你的环境里有npm,或自行改成pnpm run ...)。
唤醒窗口快捷键遵循“先找回,再收起”的窗口模式交互。
主窗口行为:
- 主窗口未出现时,按一次快捷键会显示并聚焦主窗口。
- 主窗口已经出现但被其他窗口挡住、或当前没有获得焦点时,按一次快捷键只会把主窗口聚焦到前面。
- 主窗口已经出现且处于焦点状态时,再按一次快捷键才会隐藏主窗口。
注册 App 的窗口模式行为:
- 注册 App 未运行且快捷键允许启动应用时,按一次快捷键会启动并显示窗口。
- 注册 App 已运行但窗口不在前台时,按一次快捷键会优先把窗口找回到前台。
- 注册 App 已运行且窗口已经在前台时,再按一次快捷键才会隐藏窗口。
- 注册 App 设置为“只控制已运行应用”时,未运行状态下按快捷键不会启动新窗口。
这样可以避免窗口明明在桌面上、却因为被其他窗口遮住而被快捷键误隐藏。若当前环境无法可靠确认窗口是否在前台,会沿用原来的切换方式,避免误判。
构建 Windows 安装包(MSI):
pnpm tauri build -b msi仅构建前端产物:
pnpm build本地预览构建产物:
pnpm preview构建桌面安装包/可执行文件(Tauri Build):
pnpm tauri build仓库内置插件位于 plugins/,当前包含:
ai-draw:AI 绘图ai-once:AI 一次性响应anime-finder:以图找番(trace.moe)bookmarks:网站收藏calculator:计算器clipboard-history:剪贴板历史folders:收藏集memo:快捷备忘录vscode-workspaces:VSCode 工作区(收藏目录,一键用 VSCode 打开)web-view:Web View(新窗口打开网页)
- 插件契约/Manifest/能力声明:见
docs/plugins.md - 插件源码:
plugins/<pluginId>/ - 插件构建:
pnpm plugins:build/ 开发监听:pnpm plugins:watch(可用pnpm dev:all同时跑监听与前端 dev) pnpm tauri:已接入plugins:build,确保打包/运行前插件产物是最新
- v5 App 标准样板、构建链路、注册目录、快速同步 exe、正式打包:见
apps/v5-reference-app-go/README.md - 完整本地可注册目录:
apps/<app-id>/dist-app/v5-windows/ - 本地完整生成:
pnpm --dir apps/<app-id> build:app - 本地 dev 版完整生成:
pnpm --dir apps/<app-id> build:app:dev - 只替换已存在注册目录里的入口 exe:
pnpm --dir apps/<app-id> build:app:exe - 只替换已存在 dev 注册目录里的入口 exe:
pnpm --dir apps/<app-id> build:app:exe:dev - 正式打包:
pnpm apps:package:v5 -- --app <app-id>
要求:准备一个 Fine-grained Token(最小权限:对 fast-window-plugins-download 的 Contents/Release 读写),并配置环境变量:
FAST_WINDOW_GITHUB_TOKEN=...(也兼容GITHUB_TOKEN/GH_TOKEN)
发布单个插件:
pnpm run plugins:publish:download -- --plugin <pluginId>发布全部插件(遍历 plugins/):
pnpm run plugins:publish:download -- --all常用参数:
--dry-run:只生成 zip/index 预览,不 push、不创建 Release--no-build:跳过插件构建(仅用于已经是单文件入口/预构建插件)--force:强制覆盖同版本(不推荐)
重要:版本不可变(KISS)。同一个 pluginId@version 已发布就禁止覆盖;需要升级请改 plugins/<pluginId>/manifest.json 的 version。