Supabase CLI 是 Supabase 的命令行工具,提供从本地开发到部署的完整命令参考。
用途
Supabase CLI 用于在本地运行 Supabase 服务栈、管理数据库迁移、生成类型定义、部署 Edge Functions,以及管理远程项目。它适合需要在本地模拟 Supabase 云端环境、保持数据库结构版本化、并自动化部署流程的开发者。
安装
支持多种安装方式:
- NPM(推荐用于项目):
npm install supabase --save-dev,然后使用npx supabase [command]。 - Homebrew(macOS/Linux):
brew install supabase/tap/supabase。 - Scoop(Windows):先添加 bucket,再安装。
前置条件:本地开发需要 Docker。
项目设置
- 初始化项目:
supabase init,会创建supabase/config.toml、supabase/migrations/和supabase/seed.sql。 - 链接远程项目:
supabase link --project-ref <project-ref>,项目 ref 可在 Dashboard → Project Settings → General 获取。
本地开发
- 启动本地服务栈:
supabase start,会启动 PostgreSQL、PostgREST、GoTrue Auth、Realtime、Storage、Studio 和 Inbucket(邮件测试)。输出 URL 包括 API、数据库、Studio 和 Inbucket。 - 停止:
supabase stop(保存数据)或supabase stop --no-backup(删除所有数据)。 - 查看状态:
supabase status,显示 URL、API 密钥和服务状态。
数据库命令
- 创建迁移:
supabase migration new <name>,生成带时间戳的 SQL 文件。 - 从本地变更生成迁移:
supabase db diff -f <name>,可指定 schema。 - 应用迁移:本地用
supabase migration up,推送到远程用supabase db push,可用--dry-run预览。 - 拉取远程变更:
supabase db pull。 - 重置本地数据库:
supabase db reset,重建数据库并应用所有迁移。 - 列出迁移:
supabase migration list,显示本地与远程状态。 - 回滚迁移:
supabase migration down --count <n>。 - 压缩迁移:
supabase migration squash --version <version>,用于清理迁移历史。
类型生成
生成 TypeScript 类型:
- 从本地:
supabase gen types typescript --local > database.types.ts - 从链接的远程:
supabase gen types typescript --linked > database.types.ts - 从指定项目:
supabase gen types typescript --project-id "your-id" > database.types.ts
Edge Functions
- 创建函数:
supabase functions new hello-world,生成supabase/functions/hello-world/index.ts。 - 本地服务:
supabase functions serve,可指定函数、环境文件和跳过 JWT 验证。 - 部署:
supabase functions deploy,可指定函数或使用--no-verify-jwt。 - 测试:使用 curl 向本地函数端点发送请求。
密钥管理
- 设置密钥:
supabase secrets set KEY=value,支持多个或从 .env 文件设置。 - 列出密钥:
supabase secrets list。 - 移除密钥:
supabase secrets unset KEY。
项目管理
- 列出组织:
supabase orgs list。 - 列出项目:
supabase projects list。 - 创建项目:
supabase projects create <name> --org-id <id> --region <region>。 - 删除项目:
supabase projects delete --project-ref <ref>。 - 更新远程配置:
supabase projects update-config。
数据库检查
提供多种检查命令,如缓存命中率、未使用索引、表膨胀、长时间运行查询、活跃连接等,可针对本地或链接的远程数据库。
备份与恢复
- 备份:使用
supabase db dump导出角色、schema 或数据。 - 恢复:使用
psql按顺序执行角色、schema 和数据文件。
常用标志
包括 --debug、--local、--linked、--project-ref、--db-url、--dry-run、-f 等。
限制
本地开发需要 Docker。部分命令需要链接远程项目或提供项目 ref。具体平台支持、收费和价格信息暂未提供。