English | 简体中文
一个生产就绪的 Next.js + Cloudflare Workers 全栈项目模板,基于 vinext(Vite 驱动的 Next.js 重新实现)构建。集成 D1 数据库、R2 存储、KV 缓存、better-auth 认证、next-intl 国际化和完整的 CI/CD 流程 — 所有代码原生运行在 Cloudflare Workers 全球边缘网络上。
完整安装配置步骤请查看 快速开始指南。该文档覆盖依赖安装、Cloudflare 登录、资源创建、迁移执行与开发服务器启动的全流程,这里只保留入口说明。
基于本模板构建的项目:
cloudflare-worker-template/
├── app/ # Next.js App Router
│ ├── api/ # API 路由(Edge Runtime)
│ │ ├── health/ # 健康检查
│ │ ├── users/ # 用户 CRUD 示例
│ │ ├── posts/ # 文章 CRUD 示例
│ │ └── upload/ # 文件上传示例
│ ├── layout.tsx # 根布局
│ ├── page.tsx # 首页
│ └── globals.css # 全局样式
├── repositories/ # 数据访问层(Repository 模式)
│ ├── index.ts # Repository 工厂
│ ├── user.repository.ts # User 数据操作
│ └── post.repository.ts # Post 数据操作
├── lib/ # 工具库
│ ├── api/ # API 工具(响应格式、中间件、数据库包装器)
│ ├── db/ # D1 数据库客户端(Prisma 单例)
│ ├── r2/ # R2 存储客户端
│ ├── cache/ # KV 缓存客户端
│ ├── errors/ # 统一错误处理
│ ├── logger/ # 日志系统
│ └── utils/ # 通用工具
├── components/ # React 组件
├── types/ # TypeScript 类型定义
├── migrations/ # 数据库迁移文件(SQL)
│ ├── 0001_init.sql # 初始化表结构
│ └── 002_example.sql.template
├── prisma/ # Prisma 配置
│ └── schema.prisma # 数据库模型定义
├── scripts/ # 自动化脚本
│ └── seed.js # 数据填充
├── __tests__/ # 测试文件
│ ├── lib/ # 单元测试
│ └── api/ # API 测试
├── .github/workflows/ # GitHub Actions CI/CD
│ ├── ci.yml # 持续集成
│ ├── deploy-test.yml # 测试环境部署
│ └── deploy-prod.yml # 生产环境部署
├── wrangler.toml # 本地环境配置
├── wrangler.test.toml # 测试环境配置
├── wrangler.prod.toml # 生产环境配置
├── .nvmrc # Node.js 版本
├── .npmrc # pnpm 配置
├── vitest.config.ts # 测试配置
└── package.json # 项目配置
详细命令说明请查看 开发指南
# 开发
pnpm dev # vinext 开发服务器(Vite + Workers 运行时)
# 测试
pnpm test # 运行所有测试
pnpm run test:watch # 监听模式
# 构建和部署
pnpm build # 构建应用(vinext + Vite)
pnpm deploy # 部署到 Cloudflare Workers
详细部署配置和流程请查看 部署指南
develop 分支 → 测试环境main 分支 → 生产环境在仓库设置中添加:
CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_IDcurl https://your-domain.com/api/health
# 获取所有用户
curl https://your-domain.com/api/users
# 创建用户
curl -X POST https://your-domain.com/api/users \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "name": "张三"}'
# 通过 API 上传文件
curl -X POST https://your-domain.com/api/upload \
-F "file=@image.jpg"
# 下载文件
curl https://your-domain.com/api/upload?key=uploads/1234567890-image.jpg
### 上传页面(R2 演示)
- 访问 `/upload` 试用浏览器端上传 UI(调用 `/api/upload` 并展示预览)。
pnpm test # 运行核心单元测试
pnpm run test:coverage # 查看覆盖率
测试覆盖:D1 数据库、R2 存储、KV 缓存、错误处理
wrangler.toml - 本地开发wrangler.test.toml - develop 分支自动部署wrangler.prod.toml - main 分支自动部署详细的绑定名称、Secrets 以及数据填充命令请参阅 docs/ENVIRONMENTS-zh.md。
以下为在 Cloudflare Workers Free 计划下的主要免费额度概览(以官方当前文档为准,可能随时调整):
Workers 数量:无限制
D1 Database(数据库)
每日行写入:100,000 次
R2 Storage(对象存储)
出站流量(Egress):永久免费($0)
KV Storage(键值缓存)
每日写入/删除/列出操作:100,000 次(合计)
Analytics Engine(分析引擎)
提示:若需更高配额或更强功能,可升级 Workers 付费计划;同时建议在生产环境通过特性开关接入 Analytics Engine,在开发/测试环境保持日志或 KV/D1 作为降级方案。
详细的开发规范请查看 开发指南
常见的开发与部署疑难项已经录入专题文档:
拿到这个模板后:
app/ 目录下编写页面和 API$ claude mcp add edge-next-starter \
-- python -m otcore.mcp_server <graph>