部署
Cloudflare Workers —— 一条命令
ShipAny TanStack 为 Cloudflare Workers 而生。在 Claude Code 中运行:
/deploy-cloudflare这一个 skill 驱动完整的生产部署流程:
校验 wrangler whoami;仅在未登录时触发浏览器授权。
创建 D1 数据库(默认,零外部依赖)并把绑定写入 wrangler.jsonc——如果你提到 Postgres/Neon/Supabase,则改为配置 Hyperdrive 连接你已有的 PostgreSQL。
向远端数据库应用 drizzle 迁移(wrangler d1 migrations apply --remote,Postgres 则直接 pnpm db:migrate)。
在远端数据库初始化默认角色/权限,并通过 wrangler secret put 上传密钥(AUTH_SECRET 等)——密钥值永远不会回显到屏幕。
NITRO_PRESET=cloudflare_module vite build 然后 wrangler deploy(封装在 pnpm cf:deploy 中)。最终部署永远先询问确认——这是唯一不可逆的一步。
把真实的 *.workers.dev(或自定义域名)URL 固化进构建产物;首次部署时引导创建 / 提升一个 super_admin 账号,让你立即可以登录 /admin。
幂等设计 ——"再发布一下"就是再跑一次 /deploy-cloudflare:每个阶段都会检测已有状态(D1 已存在、迁移已应用、密钥已上传、管理员已存在)并自动跳过,只有最新代码的构建 + 部署会真正执行。
常用参数:
/deploy-cloudflare --domain=app.example.com # 绑定自定义域名
/deploy-cloudflare --admin-email=X --admin-password=Y # 设置管理员账号
/deploy-cloudflare --rotate-secrets # 强制重新上传所有密钥D1 vs Postgres(Hyperdrive)
| D1(默认) | Postgres + Hyperdrive | |
|---|---|---|
| 适用 | 零外部依赖 | 已有 Postgres(Neon/Supabase/RDS)或需要 PG 特性 |
| 绑定 | d1_databases → DB | hyperdrive → HYPERDRIVE |
| Schema 推送 | wrangler d1 migrations apply --remote | 直接对 PG 执行 pnpm db:migrate |
手动部署
如果想直接用命令:
pnpm cf:build # NITRO_PRESET=cloudflare_module vite build
pnpm cf:deploy # 构建 + wrangler deployNode 服务器
pnpm build 产出自包含的 nitro 构建:
pnpm build
node .output/server/index.mjs # 监听 3000 端口Docker
多阶段 Dockerfile(node:22-alpine,非 root 用户,端口 3000):
docker build -t my-app .
docker run -p 3000:3000 --env-file .env.production my-app
DATABASE_PROVIDER在构建时固化。如需 PostgreSQL:docker build --build-arg DATABASE_PROVIDER=postgres -t my-app .