ShipAny Docs

部署

Cloudflare Workers —— 一条命令

ShipAny TanStack 为 Cloudflare Workers 而生。在 Claude Code 中运行:

/deploy-cloudflare

这一个 skill 驱动完整的生产部署流程:

鉴权检查

校验 wrangler whoami;仅在未登录时触发浏览器授权。

数据库开通

创建 D1 数据库(默认,零外部依赖)并把绑定写入 wrangler.jsonc——如果你提到 Postgres/Neon/Supabase,则改为配置 Hyperdrive 连接你已有的 PostgreSQL。

Schema 迁移

向远端数据库应用 drizzle 迁移(wrangler d1 migrations apply --remote,Postgres 则直接 pnpm db:migrate)。

RBAC 初始化 + 密钥

在远端数据库初始化默认角色/权限,并通过 wrangler secret put 上传密钥(AUTH_SECRET 等)——密钥值永远不会回显到屏幕。

构建 + 部署

NITRO_PRESET=cloudflare_module vite build 然后 wrangler deploy(封装在 pnpm cf:deploy 中)。最终部署永远先询问确认——这是唯一不可逆的一步。

URL 修正 + 管理员账号

把真实的 *.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_databasesDBhyperdriveHYPERDRIVE
Schema 推送wrangler d1 migrations apply --remote直接对 PG 执行 pnpm db:migrate

手动部署

如果想直接用命令:

pnpm cf:build    # NITRO_PRESET=cloudflare_module vite build
pnpm cf:deploy   # 构建 + wrangler deploy

Node 服务器

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 .