Files
mengya-nav/README.md
2026-06-24 22:10:28 +08:00

56 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 萌芽导航sproutnav
单一 **Cloudflare Worker**[`worker/src/index.ts`](worker/src/index.ts) 处理 `/api/*`,静态资源由 Wrangler **[assets]** 提供Vite 构建输出 [`frontend/dist`](frontend/dist))。
## 目录结构
- **`worker/`**:导航 APIKV`sites` / `categories`、与静态资源回退SPA
- **`frontend/`**React + Vite PWA[`frontend/src/config/site.ts`](frontend/src/config/site.ts) 可配置 `VITE_API_BASE`、站点文案、随机背景、`VITE_FAVICON_API_BASE`(默认 `https://favicon.smyhub.com/api/favicon?url=`
- **[`wrangler.toml`](wrangler.toml)**`main``[[kv_namespaces]]``[vars]`(如 `ADMIN_PASSWORD`)、`[assets]``./frontend/dist`
## 本地开发
```bash
# 仅前端(无同源 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。
## 部署
```bash
npm install
cd frontend && npm install && cd ..
npm run deploy
```
`deploy` 仅打包并上传 **`frontend/dist`**(线上版);桌面版 `dist-desktop` 自行交给桌面工程。
生产环境请在 Dashboard 或密文中覆盖 **`ADMIN_PASSWORD`**,勿提交真实口令。
## KV 数据
沿用 [`wrangler.toml`](wrangler.toml) 中 namespace `id` 即可续用原有 KV 数据。
## 常见问题
- **站点卡片图标**:由前端根据每条站点的 `url` 请求 favicon 服务,不经 Worker可通过 `VITE_FAVICON_API_BASE` 覆盖默认基址。
- **跨域 / 缓存**:若 API 已同源但仍见旧请求,尝试硬刷新或注销 Service Worker 后清除站点数据。