mcpField
C
cloudflare-workers-dev-experience

cloudflare-workers-dev-experience

github.com/secondsky开发240309 次安装5 周前更新
代码仓库

关于 cloudflare-workers-dev-experience

这是一项面向 Cloudflare Workers 开发者的本地开发技能,涵盖 Wrangler、Miniflare 等工具,提供项目初始化、配置、调试和依赖安全指引。

主要功能

  1. 01项目设置指引
  2. 02Wrangler 配置示例
  3. 03本地测试工作流
  4. 04调试与日志查看
  5. 05依赖安全建议

适用场景

  1. 01创建 Workers 项目
  2. 02在本地测试 Worker
  3. 03排查运行时和绑定问题
  4. 04检查软件包安装实践

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/secondsky/claude-skills --skill cloudflare-workers-dev-experience

安装后在 Claude Code 中输入/cloudflare-workers-dev-experience确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
debugging-tools.md
local-development.md
wrangler-config.md
scripts/
dev-setup.sh
templates/
dev-script.ts
wrangler-config.jsonc

详细介绍

Cloudflare Workers 开发者体验

使用 Wrangler、Miniflare 和现代工具进行本地开发设置。

快速开始

# Create new project
bunx create-cloudflare@latest my-worker

# Or from scratch
mkdir my-worker && cd my-worker
bun init -y
bun add -d wrangler @cloudflare/workers-types

# Start local development
bunx wrangler dev

安全安装

像 bunx create-cloudflare 这样的脚手架工具会下载并执行远程代码。运行前,请遵循供应链安全最佳实践:

  • 阻止安装后脚本 — npm config set ignore-scripts true(或 Bun:默认禁用)
  • 冷却期 — 等待 7 天,让社区审核新版本
  • 安装前审计 — 运行 socket package score npm <pkg> 或使用 socket npm install <pkg> 检查软件包

加载 dependency-upgrade 技能,获取完整的安全配置,包括 Socket CLI 集成、冷却期设置、锁文件验证和 CI 强制执行。

必备 wrangler.jsonc

{
  "$schema": "node_modules/wrangler/config-schema.json",
  "name": "my-worker",
  "main": "src/index.ts",
  "compatibility_date": "2024-12-01",

  // Development settings
  "dev": {
    "port": 8787,
    "local_protocol": "http"
  },

  // Environment variables (non-secret)
  "vars": {
    "ENVIRONMENT": "development"
  },

  // Bindings
  "kv_namespaces": [
    { "binding": "KV", "id": "abc123", "preview_id": "def456" }
  ],

  "d1_databases": [
    { "binding": "DB", "database_id": "xyz789", "database_name": "my-db" }
  ],

  "r2_buckets": [
    { "binding": "BUCKET", "bucket_name": "my-bucket" }
  ]
}

关键规则

  1. 本地测试始终使用 wrangler dev - 准确模拟 Cloudflare 运行时
  2. 设置 compatibility_date - 控制运行时行为,每季度更新
  3. 本地开发使用预览 ID - 与生产环境绑定项分开
  4. 正确配置 TypeScript - 使用 @cloudflare/workers-types
  5. 启用源映射 - 在开发过程中获得更好的错误堆栈信息

可避免的 6 大错误

错误症状预防方法
找不到模块部署时导入错误在 tsconfig 中设置 "moduleResolution": "bundler"
绑定项未定义本地出现 env.KV is undefined在 KV 命名空间配置中添加 preview_id
HMR 不工作更改未生效检查端口冲突,使用 --local 标志
D1 架构不匹配本地查询失败在本地数据库上运行迁移
类型错误缺少绑定项类型使用 wrangler types 生成类型
CORS 问题浏览器阻止请求在开发处理程序中添加 CORS 标头

本地开发工作流

# Start dev server (recommended)
bunx wrangler dev

# With live reload
bunx wrangler dev --live-reload

# Remote mode (use actual Cloudflare services)
bunx wrangler dev --remote

# Specify environment
bunx wrangler dev --env staging

# Custom port
bunx wrangler dev --port 3000

TypeScript 配置

tsconfig.json:

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "ES2022",
    "moduleResolution": "bundler",
    "lib": ["ES2022"],
    "types": ["@cloudflare/workers-types"],
    "strict": true,
    "noEmit": true,
    "skipLibCheck": true,
    "allowSyntheticDefaultImports": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}

Package.json 脚本

{
  "scripts": {
    "dev": "wrangler dev",
    "deploy": "wrangler deploy",
    "deploy:staging": "wrangler deploy --env staging",
    "deploy:production": "wrangler deploy --env production",
    "test": "vitest",
    "test:watch": "vitest --watch",
    "type-check": "tsc --noEmit",
    "lint": "eslint src/",
    "types": "wrangler types",
    "tail": "wrangler tail",
    "db:migrate": "wrangler d1 migrations apply DB",
    "db:studio": "wrangler d1 execute DB --local --command 'SELECT 1'"
  }
}

调试

控制台日志
// Development-only logging
export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    if (env.ENVIRONMENT === 'development') {
      console.log('Request:', request.method, request.url);
      console.log('Headers:', Object.fromEntries(request.headers));
    }

    // Handler logic...
  }
};
使用 wrangler tail
# Real-time logs from deployed worker
wrangler tail

# Filter by status
wrangler tail --status error

# Filter by method
wrangler tail --method POST

# JSON format for parsing
wrangler tail --format json
VS Code 调试

.vscode/launch.json:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Wrangler Dev",
      "type": "node",
      "request": "launch",
      "runtimeExecutable": "bunx",
      "runtimeArgs": ["wrangler", "dev", "--inspector-port", "9229"],
      "skipFiles": ["<node_internals>/**"],
      "sourceMaps": true
    }
  ]
}

何时加载参考资料

根据任务加载特定参考资料:

  • 设置项目? → 加载 references/local-development.md,查看完整设置指南
  • 配置 wrangler? → 加载 references/wrangler-config.md,查看所有配置选项
  • 调试问题? → 加载 references/debugging-tools.md,了解调试技巧

模板

模板用途使用时机
templates/wrangler-config.jsonc完整的 wrangler 配置开始新项目
templates/dev-script.ts开发实用工具添加开发辅助工具

脚本

脚本用途命令
scripts/dev-setup.sh初始化开发环境./dev-setup.sh

资源

评论

支持 Markdown