Supabase Local Development by constellos/claude-code-plugins
npx skills add https://github.com/constellos/claude-code-plugins --skill 'Supabase Local Development'Supabase 本地开发提供了一个完整的本地 Postgres 数据库,所有 Supabase 服务(Auth、Storage、Edge Functions、Realtime)都在 Docker 容器中运行。这使得在部署到生产环境之前可以进行离线开发、更快的迭代和安全的数据库迁移。
主要优势:
官方文档:
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
Supabase 本地开发需要一个兼容 Docker 的容器运行时:
验证 Docker 是否正在运行:
docker info
通过 npm 安装(推荐用于 Next.js 项目):
npm install -g supabase
或通过 Homebrew 安装 (macOS):
brew install supabase/tap/supabase
验证安装:
supabase --version
supabase init
这将创建一个包含以下内容的 supabase/ 目录:
config.toml - 本地配置seed.sql - 可选的种子数据migrations/ - 数据库迁移supabase start
首次运行会下载 Docker 镜像(约 2GB)。后续启动会更快。
启动的服务:
| 服务 | 本地 URL | 用途 |
|---|---|---|
| API | http://127.0.0.1:54321 | REST/GraphQL API |
| Studio | http://127.0.0.1:54323 | 数据库 UI |
| Inbucket | http://127.0.0.1:54324 | 电子邮件测试 |
| Database | postgresql://127.0.0.1:54322 | 直接 Postgres 连接 |
supabase status -o env
输出:
SUPABASE_URL=http://127.0.0.1:54321
SUPABASE_ANON_KEY=eyJ...
SUPABASE_SERVICE_ROLE_KEY=eyJ...
SUPABASE_DB_URL=postgresql://postgres:postgres@127.0.0.1:54322/postgres
添加到 .env.local:
# Supabase 本地开发
NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
SUPABASE_SERVICE_ROLE_KEY=eyJ...
注意: NEXT_PUBLIC_ 前缀会将变量暴露给浏览器。
supabase gen types typescript --local > lib/supabase/database.types.ts
模式更改后重新生成。
使用 NEXT_PUBLIC_ 前缀:
NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
无需前缀:
SUPABASE_SERVICE_ROLE_KEY=eyJ...
SUPABASE_DB_URL=postgresql://...
| 框架 | 文件 | 优先级 |
|---|---|---|
| Next.js | .env.local | 第 1 位 |
| Next.js | .env.development.local | 第 2 位 |
| 通用 | .env | 第 3 位 |
| Cloudflare Workers | dev.vars | 特殊 |
supabase db diff -f migration_name
supabase db reset
supabase db push
supabase link --project-ref YOUR_PROJECT_REF
supabase gen types typescript --local > lib/supabase/database.types.ts
supabase gen types typescript --project-id YOUR_PROJECT_ID > lib/supabase/database.types.ts
import { createClient } from "@supabase/supabase-js";
import type { Database } from "@/lib/supabase/database.types";
const supabase = createClient<Database>(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
);
| 命令 | 用途 |
|---|---|
supabase init | 初始化新项目 |
supabase start | 启动本地服务 |
supabase stop | 停止本地服务 |
supabase status | 显示服务状态 |
supabase status -o env | 以环境变量形式输出 |
supabase db reset | 重置数据库并应用迁移 |
supabase db diff -f name | 从更改创建迁移 |
supabase db push | 将迁移推送到远程 |
supabase gen types typescript --local | 从本地数据库生成类型 |
supabase link --project-ref REF | 链接到远程项目 |
# macOS - 启动 Docker Desktop
open -a Docker
# Linux - 启动 Docker 守护进程
sudo systemctl start docker
如果端口被占用:
supabase stop --no-backup
supabase start
或者在 supabase/config.toml 中配置不同的端口。
supabase stop --no-backup
supabase start
supabase db reset
应该:
supabase db diff 进行迁移.env.local 存储本地凭据(已 gitignore)不应该:
每周安装次数
0
代码仓库
GitHub 星标数
5
首次出现
1970年1月1日
安全审计
Supabase Local Development provides a complete local Postgres database with all Supabase services (Auth, Storage, Edge Functions, Realtime) running in Docker containers. This enables offline development, faster iteration, and safe database migrations before deploying to production.
Key benefits:
Official Documentation:
Supabase local development requires a Docker-compatible container runtime:
Verify Docker is running:
docker info
Install via npm (recommended for Next.js projects):
npm install -g supabase
Or via Homebrew (macOS):
brew install supabase/tap/supabase
Verify installation:
supabase --version
supabase init
This creates a supabase/ directory with:
config.toml - Local configurationseed.sql - Optional seed datamigrations/ - Database migrationssupabase start
First run downloads Docker images (~2GB). Subsequent starts are faster.
Services started:
| Service | Local URL | Purpose |
|---|---|---|
| API | http://127.0.0.1:54321 | REST/GraphQL API |
| Studio | http://127.0.0.1:54323 | Database UI |
| Inbucket | http://127.0.0.1:54324 | Email testing |
| Database | postgresql://127.0.0.1:54322 | Direct Postgres |
supabase status -o env
Output:
SUPABASE_URL=http://127.0.0.1:54321
SUPABASE_ANON_KEY=eyJ...
SUPABASE_SERVICE_ROLE_KEY=eyJ...
SUPABASE_DB_URL=postgresql://postgres:postgres@127.0.0.1:54322/postgres
Add to .env.local:
# Supabase Local Development
NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
SUPABASE_SERVICE_ROLE_KEY=eyJ...
Note: NEXT_PUBLIC_ prefix exposes variables to the browser.
supabase gen types typescript --local > lib/supabase/database.types.ts
Regenerate after schema changes.
Prefix with NEXT_PUBLIC_:
NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
No prefix required:
SUPABASE_SERVICE_ROLE_KEY=eyJ...
SUPABASE_DB_URL=postgresql://...
| Framework | File | Priority |
|---|---|---|
| Next.js | .env.local | 1st |
| Next.js | .env.development.local | 2nd |
| Generic | .env | 3rd |
| Cloudflare Workers | dev.vars | Special |
supabase db diff -f migration_name
supabase db reset
supabase db push
supabase link --project-ref YOUR_PROJECT_REF
supabase gen types typescript --local > lib/supabase/database.types.ts
supabase gen types typescript --project-id YOUR_PROJECT_ID > lib/supabase/database.types.ts
import { createClient } from "@supabase/supabase-js";
import type { Database } from "@/lib/supabase/database.types";
const supabase = createClient<Database>(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
);
| Command | Purpose |
|---|---|
supabase init | Initialize new project |
supabase start | Start local services |
supabase stop | Stop local services |
supabase status | Show service status |
supabase status -o env | Output as environment variables |
supabase db reset | Reset database and apply migrations |
# macOS - Start Docker Desktop
open -a Docker
# Linux - Start Docker daemon
sudo systemctl start docker
If ports are in use:
supabase stop --no-backup
supabase start
Or configure different ports in supabase/config.toml.
supabase stop --no-backup
supabase start
supabase db reset
DO:
supabase db diff for migrations.env.local for local credentials (gitignored)DON'T:
Weekly Installs
0
Repository
GitHub Stars
5
First Seen
Jan 1, 1970
Security Audits
Azure RBAC 权限管理工具:查找最小角色、创建自定义角色与自动化分配
117,000 周安装
supabase db diff -f name | Create migration from changes |
supabase db push | Push migrations to remote |
supabase gen types typescript --local | Generate types from local |
supabase link --project-ref REF | Link to remote project |