← ClaudeAtlas

vercel_supabase_deploymentlisted

一键将 Next.js 项目部署到 Vercel + Supabase。自动完成:读取本地 .env、提取本地 PostgreSQL schema、创建/导入 Supabase 数据库、推送 GitHub、配置 Vercel 环境变量、触发生产部署。当用户说"帮我部署"、"deploy"、"部署项目"、"上线"时触发。
weiyi88/cc-code · ★ 5 · API & Backend · score 74
Install: claude install-skill weiyi88/cc-code
# Vercel + Supabase 一键部署 ## 前置条件(用户需提前完成) 1. **本地 `.env` 已配置**(我直接读取,无需用户手动提供) 2. **Supabase Access Token**(`sbp_` 开头),用户在对话中提供 3. **GitHub 远程仓库已配置**(`git remote -v` 可见) 4. **Vercel CLI 已本地登录**(`vercel whoami` 可用) 5. **GitHub OAuth App Callback URL** 已改为新生产域名(唯一需要用户手动操作的步骤) --- ## 部署流程 ### Step 1:读取环境配置 ```bash cat .env ``` 从 `.env` 提取: - `DATABASE_URL`(Supabase Transaction Pooler,端口 6543) - `DIRECT_URL`(Supabase Direct Connection,端口 5432) - `NEXTAUTH_URL`(生产域名) - 其他所有变量 从 `DIRECT_URL` 解析出 Supabase Project Ref(格式:`db.<ref>.supabase.co`) --- ### Step 2:提取本地 PostgreSQL Schema ```bash pg_dump -h localhost -U <本地DB用户> -d <本地DB名> \ --schema-only --no-owner --no-acl \ -f .cc_code/scripts/schema_export.sql ``` > 注意:用户名不是 `postgres`,是本地系统用户(如 `blue_focus`)。如果失败,用 `psql -l` 查看实际用户。 --- ### Step 3:通过 Supabase Management API 导入 Schema **不能用直连**(中国网络 DNS 解析失败),必须用 REST API + curl。 ```python import subprocess, re access_token = "<用户提供的 sbp_ token>" project_ref = "<从 DIRECT_URL 解析的 ref>" with open(".cc_code/scripts/schema_export.sql") as f: sql_content = f.read() # 逐行状态机解析 SQL 语句(处理多行 + dollar-quoting) statements = parse_sql_statements(sql_content) for i, stmt in enumerate(statements): payload = {"query": stmt} result = subprocess.run([ "curl", "-s", "-X", "POST", f"https://api.supabase.com/v1/projects/{project_ref}/database/query", "-H", f"Authorization: Bearer {access_token}", "-H", "Content-Type: application/json",