ShipAny Docs

部署

Cloudflare Workers —— 一条命令

ShipAny vinext 是 Cloudflare 原生的——每个分支都用 Vite + @cloudflare/vite-plugin 构建,经 vinext deploy 发布。在 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 等)——密钥值永远不会回显到屏幕。

构建 + 部署

pnpm run deploy(先加载 .env.production,再执行 vinext 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               # 强制重新上传所有密钥
/deploy-cloudflare --preview                      # 部署到预览环境

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 run deploy
  • pnpm run deploy,不要pnpm deploy —— pnpm 会把 deploy 当作 workspace 命令拦截
  • vinext deploy 前必须先加载 .env.production(包装脚本已处理)——否则 .env.local 里的 localhost URL 会被固化进服务端构建

要部署到 Node/Docker/Vercel?那是上游版本的事——见 ShipAny Next → 部署