2.2 KiB
2.2 KiB
萌芽导航(sproutnav)
单一 Cloudflare Worker:worker/src/index.ts 处理 /api/*,静态资源由 Wrangler [assets] 提供(Vite 构建输出 frontend/dist)。
目录结构
worker/:导航 API(KV:sites/categories)、与静态资源回退(SPA)frontend/:React + Vite PWA;frontend/src/config/site.ts可配置VITE_API_BASE、站点文案、随机背景、VITE_FAVICON_API_BASE(默认https://favicon.smyhub.com/api/favicon?url=)wrangler.toml:main、[[kv_namespaces]]、[vars](如ADMIN_PASSWORD)、[assets]→./frontend/dist
本地开发
# 仅前端(无同源 API 时需自行 mock 或填 VITE_API_BASE)
cd frontend && npm install && npm run dev
# Worker + 资源(需先 build 前端,或由 wrangler 触发)
npm install
npm run build:frontend
npm run dev
构建产物
npm run build(根目录或 frontend/)会连续构建两份前端:
| 脚本 / 模式 | 输出目录 | VITE_API_BASE |
用途 |
|---|---|---|---|
默认 vite build |
frontend/dist |
空(同源 /api) |
Worker [assets] 线上部署 |
--mode desktop |
frontend/dist-desktop |
https://nav.smyhub.com |
桌面壳(Electron/Tauri 等)加载 |
单独构建:npm run build:web / npm run build:desktop(在 frontend/ 下)。
桌面版使用 HashRouter、base: './',且不注册 Service Worker。
部署
npm install
cd frontend && npm install && cd ..
npm run deploy
deploy 仅打包并上传 frontend/dist(线上版);桌面版 dist-desktop 自行交给桌面工程。
生产环境请在 Dashboard 或密文中覆盖 ADMIN_PASSWORD,勿提交真实口令。
KV 数据
沿用 wrangler.toml 中 namespace id 即可续用原有 KV 数据。
常见问题
- 站点卡片图标:由前端根据每条站点的
url请求 favicon 服务,不经 Worker;可通过VITE_FAVICON_API_BASE覆盖默认基址。 - 跨域 / 缓存:若 API 已同源但仍见旧请求,尝试硬刷新或注销 Service Worker 后清除站点数据。