本地开发

了解如何使用 Supabase CLI 在本地开发你的项目并部署到 Supabase 平台。

前提条件

确保你在你的本地机器上安装了这些东西。

登录到Supabase CLI#

supabase login

初始化你的项目

为你的项目创建一个新的文件夹并启动一个新的git仓库。

# create your project folder
mkdir your-project

# move into the new folder
cd your-project

# start a new git repository
git init

启动Supabase服务#

Initialize Supabase为在本地开发你的项目设置了配置。

supabase init

确保Docker正在运行。start命令使用Docker来启动Supabase的service。 如果是第一次使用CLI,这个命令可能需要运行一段时间。

supabase start

一旦所有的 Supabase 服务都在运行,你会看到包含你的本地 Supabase 凭证的输出。 你可以在任何时候使用 stop 命令来停止所有服务。

访问服务

你可以用任何Postgres客户端直接访问服务,或者通过API网关(Kong)。

1# Default URL:
2postgresql://postgres:postgres@localhost:54322/postgres

本地Postgres实例可以通过psql 或任何其他Postgres客户端,如pgadmin

例如:

psql 'postgresql://postgres:postgres@localhost:54322/postgres'

note

要从本地Supabase设置中的边缘函数访问数据库,请将localhost替换为host.docker.internal

数据库迁移

数据库的变化是通过 "迁移 "来管理的。数据库迁移是跟踪你的数据库随时间变化的一种常见方式。

进行数据库修改

在本指南中,创建一个名为 "employees "的表。在Supabase Studio中,导航到SQL编辑器页,运行以下SQL命令。

1create table employees (
2    id integer primary key generated always as identity,
3    name text
4);

note

你可以使用supabase status所显示的DB URL执行任何SQL。

运行db diff命令来检测本地数据库的变化。

1supabase db diff create_employees -f create_employees

这将创建一个名为supabase/migrations/<timestamp>_create_employees.sql的新迁移,代表自supabase start以来对本地数据库的任何修改。

添加样本数据

使用supabase/seed.sql中的种子脚本(用supabase init创建)向表中添加样本数据。

1-- in supabase/seed.sql
2insert into public.employees (name)
3values
4  ('Erlich Backman'),
5  ('Richard Hendricks'),
6  ('Monica Hall');

重新运行迁移和种子脚本。

supabase db reset

现在你应该在Studio中看到employees的内容。

重置数据库变化

使用reset命令来恢复本地数据库的任何变化。

1-- run on local database to make a change
2alter table employees
3  add department text default 'Hooli';

运行下面的命令来重置本地数据库。

1supabase db reset

部署你的项目

进入Supabase Dashboard并创建一个项目来部署这些变化。

连接你的项目

note

连接你的项目需要几个命令。我们正在将这些命令合并成一个单一的命令。请和我们一起努力!

使用supabase link将你的项目与你的远程项目联系起来。

supabase link --project-ref <project-id>
# You can get <project-id> from your project’s dashboard URL: https://app.supabase.com/project/<project-id>

supabase db remote commit
# Capture any changes that you have made to your database before setting up the CLI

supabase/migrations现在被填充到..._remote_commit.sql中的迁移。 这个迁移捕获了你的本地数据库所需的任何变化,以匹配你的远程Supabase项目的模式。

部署数据库变化

使用[db push](/docs/reference/cli/usage#supabase-db-push)部署任何本地数据库迁移。

1supabase db push

部署边缘函数

使用[functions deploy](/docs/reference/cli/usage#supabase-functions-deploy)部署任何边缘函数。

1supabase functions deploy <function_name>

限制因素

本地开发环境的功能并不像Supabase平台那样完整。以下是其中的一些不同之处。

  • 存储界面即将推出。
  • 函数接口即将推出。
  • 日志不支持通过接口(但是你可以通过Docker容器访问它们)。
  • 你不能在Dashboard中更新你的项目设置--这必须通过CLI完成。