[ PROMPT_NODE_24146 ]
Miniflare 说明文档
[ SKILL_DOCUMENTATION ]
# Miniflare
用于 Cloudflare Workers 开发/测试的本地模拟器。在 workerd 沙箱中运行 Workers,实现运行时 API,无需联网。
## 特性
- 功能全面:支持 KV、Durable Objects、R2、D1、WebSockets、Queues
- 完全本地化:无需联网即可测试,即时重载
- 原生 TypeScript 支持:详细日志、源码映射 (source maps)
- 高级测试:无需 HTTP 即可分发事件,模拟 Worker 连接
## 何时使用
**Workers 测试决策树:**
需要测试 Workers?
│
├─ 仅针对业务逻辑进行单元测试?
│ └─ getPlatformProxy (Vitest/Jest) → [patterns.md](./patterns.md#getplatformproxy)
│ 快速,无 HTTP,直接绑定访问
│
├─ 使用完整运行时的集成测试?
│ ├─ 单个 Worker?
│ │ └─ Miniflare API → [快速入门](#quick-start)
│ │ 完全控制,程序化访问
│ │
│ ├─ 多个 Worker + 服务绑定?
│ │ └─ Miniflare workers 数组 → [configuration.md](./configuration.md#multiple-workers)
│ │ 共享存储,Worker 间调用
│ │
│ └─ Vitest 测试运行器集成?
│ └─ vitest-pool-workers → [patterns.md](./patterns.md#vitest-pool-workers)
│ 在 Vitest 中运行完整的 Workers 环境
│
└─ 本地开发服务器?
└─ wrangler dev (非 Miniflare)
热重载,自动配置
**使用 Miniflare 进行:**
- 带有完整 Worker 运行时的集成测试
- 本地测试绑定/存储
- 带有服务绑定的多个 Workers
- 程序化事件分发 (fetch, queue, scheduled)
**使用 getPlatformProxy 进行:**
- 业务逻辑的快速单元测试
- 无 HTTP 开销的测试
- Vitest/Jest 环境
**使用 Wrangler 进行:**
- 本地开发工作流
- 生产环境部署
## 设置
bash
npm i -D miniflare
需要在 `package.json` 中配置 ES 模块:
{"type": "module"}
## 快速入门
js
import { Miniflare } from "miniflare";
const mf = new Miniflare({
modules: true,
script: `
export default {
async fetch(request, env, ctx) {
return new Response("Hello Miniflare!");
}
}
`,
});
const res = await mf.dispatchFetch("http://localhost:8787/");
console.log(await res.text()); // Hello Miniflare!
await mf.dispose();
## 阅读顺序
**初次接触 Miniflare?** 从这里开始:
1. [快速入门](#quick-start) - 2 分钟内运行
2. [何时使用](#when-to-use) - 选择你的测试方法
3. [patterns.md](./patterns.md) - 测试模式 (getPlatformProxy, Vitest, node:test)
4. [configuration.md](./configuration.md) - 配置绑定、存储