本地开发
了解如何使用 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)。
数据库迁移
数据库的变化是通过 "迁移 "来管理的。数据库迁移是跟踪你的数据库随时间变化的一种常见方式。
进行数据库修改
在本指南中,创建一个名为 "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完成。