feat(api): 添加前端代理和静态资源处理逻辑
- 增加了对前端开发服务器的代理支持 - 实现了静态资源请求的处理 - 更新了类型定义以支持新环境变量 - 新增了 wrangler.jsonc 配置文件,替换原有的模板文件
This commit is contained in:
1 parent
c36e3c1017
commit
6071f18f7a
14 files changed
+257
-3988
No files matched your search
@@ -64,7 +64,8 @@ awsl-one-api/
|
||||
├── public/ # 静态文件
|
||||
│ └── index.html # Web 管理界面
|
||||
├── type.d.ts # 类型定义
|
||||
├── wrangler.toml # Cloudflare Workers 配置
|
||||
├── wrangler.jsonc # 生产/部署配置
|
||||
├── wrangler.local.jsonc # 本地开发配置
|
||||
└── package.json # 项目配置
|
||||
```
|
||||
|
||||
@@ -74,60 +75,115 @@ awsl-one-api/
|
||||
|
||||
### 环境要求
|
||||
|
||||
- Node.js 18+
|
||||
- pnpm
|
||||
- Bun 1.3+
|
||||
- Cloudflare Workers 账户
|
||||
|
||||
### 安装依赖
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
bun install
|
||||
```
|
||||
|
||||
仓库已配置为 Bun workspaces,根目录一次安装会同时安装 Worker 和 `frontend/` 的依赖。
|
||||
|
||||
### 配置环境
|
||||
|
||||
1. 复制 `wrangler.toml.template` 为 `wrangler.toml` 并修改配置:
|
||||
1. 修改 `wrangler.jsonc`,用于生产部署:
|
||||
|
||||
```toml
|
||||
name = "awsl-one-api"
|
||||
main = "src/index.ts"
|
||||
compatibility_date = "2025-04-28"
|
||||
routes = [
|
||||
{ pattern = "your-domain.com", custom_domain = true },
|
||||
]
|
||||
|
||||
[vars]
|
||||
ADMIN_TOKEN = "your-secure-admin-token-here"
|
||||
|
||||
[assets]
|
||||
directory = "public"
|
||||
binding = "ASSETS"
|
||||
run_worker_first = true
|
||||
|
||||
[[d1_databases]]
|
||||
binding = "DB"
|
||||
database_name = "your-database-name"
|
||||
database_id = "your-database-id"
|
||||
```jsonc
|
||||
{
|
||||
"$schema": "node_modules/wrangler/config-schema.json",
|
||||
"name": "awsl-one-api",
|
||||
"main": "src/index.ts",
|
||||
"compatibility_date": "2025-04-28",
|
||||
"workers_dev": false,
|
||||
"vars": {
|
||||
"ADMIN_TOKEN": "your-secure-admin-token-here"
|
||||
},
|
||||
"assets": {
|
||||
"directory": "./public",
|
||||
"binding": "ASSETS",
|
||||
"run_worker_first": true
|
||||
},
|
||||
"d1_databases": [
|
||||
{
|
||||
"binding": "DB",
|
||||
"database_name": "your-database-name",
|
||||
"database_id": "your-database-id"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
1. 创建 Cloudflare D1 数据库:
|
||||
2. 修改 `wrangler.local.jsonc`,用于本地开发:
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"$schema": "node_modules/wrangler/config-schema.json",
|
||||
"name": "awsl-one-api",
|
||||
"main": "src/index.ts",
|
||||
"compatibility_date": "2025-04-28",
|
||||
"workers_dev": false,
|
||||
"vars": {
|
||||
"ADMIN_TOKEN": "your-local-admin-token",
|
||||
"FRONTEND_DEV_SERVER_URL": "http://127.0.0.1:5173"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
3. 创建 Cloudflare D1 数据库:
|
||||
|
||||
```bash
|
||||
wrangler d1 create awsl-one-api
|
||||
```
|
||||
|
||||
4. 在 Cloudflare Dashboard 中手动绑定生产域名:
|
||||
|
||||
1. 进入 `Workers & Pages`
|
||||
2. 选择当前 Worker
|
||||
3. 打开 `Settings > Domains & Routes`
|
||||
4. 选择 `Add > Custom Domain`
|
||||
5. 添加你的生产域名
|
||||
|
||||
如果你选择在 Dashboard 管理生产域名,就不要再把 `routes` / `custom_domain` 写回 `wrangler.jsonc`,否则下次 `wrangler deploy` 会用配置文件覆盖 Dashboard 中的路由设置。
|
||||
|
||||
### 本地开发
|
||||
|
||||
```bash
|
||||
pnpm dev
|
||||
bun run dev
|
||||
```
|
||||
|
||||
执行后会同时启动:
|
||||
|
||||
- 前端 Vite 开发服务器:`http://127.0.0.1:5173`(作为 Worker 的上游)
|
||||
- Cloudflare Worker 本地服务:`http://127.0.0.1:8788`(浏览器访问入口)
|
||||
|
||||
Worker 会代理非 `/api/*`、`/v1/*` 的请求到本地 Vite dev server,因此本地联调时应访问 `http://127.0.0.1:8788`,而不是直接打开 `5173`。
|
||||
这里不需要再给前端配置 Vite `server.proxy`,但仍然需要同时启动 Vite dev server,因为 HMR 和未构建源码都是由它提供,Worker 只是统一入口。
|
||||
`bun run dev:worker` 会显式使用 `wrangler.local.jsonc`,并固定 `--host localhost`,避免本地开发被生产配置干扰。
|
||||
|
||||
如果只想单独调试后端,可运行:
|
||||
|
||||
```bash
|
||||
bun run dev:worker
|
||||
```
|
||||
|
||||
如果只想单独启动前端,可运行:
|
||||
|
||||
```bash
|
||||
bun run dev:web
|
||||
```
|
||||
|
||||
此模式只启动 Vite dev server,适合做纯前端样式开发;如果需要直接从 `5173` 调 API,请自行设置 `VITE_API_BASE_URL=http://127.0.0.1:8788`。
|
||||
|
||||
### 部署到生产环境
|
||||
|
||||
```bash
|
||||
pnpm run deploy
|
||||
bun run deploy
|
||||
```
|
||||
|
||||
部署前会自动构建前端资源到 `public/`。
|
||||
|
||||
<details>
|
||||
<summary><h2>📖 使用与配置</h2></summary>
|
||||
|
||||
|
||||
Reference in new issue
Block a user