[ PROMPT_NODE_24512 ]
Wrangler 设计模式
[ SKILL_DOCUMENTATION ]
# Wrangler 开发模式
常见工作流和最佳实践。
## 新建 Worker 项目
bash
wrangler init my-worker && cd my-worker
wrangler dev # 本地开发
wrangler deploy # 部署
## 本地开发
bash
wrangler dev # 本地模式(快速,模拟)
wrangler dev --remote # 远程模式(生产级精度)
wrangler dev --env staging --port 8787
wrangler dev --inspector-port 9229 # 启用调试
调试:chrome://inspect → Configure → localhost:9229
## 密钥
bash
# 生产环境
echo "secret-value" | wrangler secret put SECRET_KEY
# 本地:使用 .dev.vars (已在 gitignore 中)
# SECRET_KEY=local-dev-key
## 添加 KV
bash
wrangler kv namespace create MY_KV
wrangler kv namespace create MY_KV --preview
# 添加到 wrangler.jsonc: { "binding": "MY_KV", "id": "abc123" }
wrangler deploy
## 添加 D1
bash
wrangler d1 create my-db
wrangler d1 migrations create my-db "initial_schema"
# 编辑 migrations/ 中的迁移文件,然后:
wrangler d1 migrations apply my-db --local
wrangler deploy
wrangler d1 migrations apply my-db --remote
# 时间旅行(恢复到特定时间点)
wrangler d1 time-travel restore my-db --timestamp 2025-01-01T12:00:00Z
## 多环境
bash
wrangler deploy --env staging
wrangler deploy --env production
c
{ "env": { "staging": { "vars": { "ENV": "staging" } } } }
## 测试
### 使用 Node.js 测试运行器的集成测试
typescript
import { startWorker } from "wrangler";
import { describe, it, before, after } from "node:test";
import assert from "node:assert";
describe("API", () => {
let worker;
before(async () => {
worker = await startWorker({
config: "wrangler.jsonc",
remote: "minimal" // 使用真实绑定进行快速测试
});
});
after(async () => await worker.dispose());
it("creates user", async () => {
const response = await worker.fetch("http://example.com/api/users", {
method: "POST",
body: JSON.stringify({ name: "Alice" })
});
assert.strictEqual(response.status, 201);
});
});
### 使用 Vitest 进行测试
安装:`npm install -D vitest @cloudflare/vitest-pool-workers`
**vitest.config.ts:**
typescript
import { defineWorkersConfig } from "@cloudflare/vitest-pool-workers/config";
export default defineWorkersConfig({
test: { poolOptions: { workers: { wrangler: { configPath: "./wrangler.jsonc" } } } }
});
**tests/api.test.ts:**
typescript
import { env,