🥬

【Supabase】ローカル開発(CLI)チートシート

2024/07/11に公開

ローカルマシン上でSupabase開発を行う上で個人的によく使うCLIコマンドを整理しておきます。

公式情報

https://supabase.com/docs/guides/cli

プロジェクト設定

初期化

ローカル開発プロジェクトフォルダ内にSupabaseフォルダを生成します。

npx supabase init

ローカルSupabaseの起動・停止

Supabaseサービスの起動

Docker上でSupabaseサービスを起動します。

npx supabase start

Supabaseサービスの終了

Docker上で起動中のSupabaseサービスを停止します。
ローカルデータベース上のデータは保持され、次回起動時に継続してデータを利用できます。

npx supabase stop

データのリセットも同時に行う場合はこちら。

npx supabase stop --no-backup

Database開発

マイグレーションファイルの作成

新規でマイグレーションファイルを作成します。
例:npx supabase migration new create_employees_table

npx supabase migration new [FILE_NAME]

マイグレーションファイルの削除

ローカルファイル削除用のコマンドは存在しません。
手動でマイグレーションファイルを削除する必要があります。

マイグレーションの実行(データベースのリセット)

データベースをリセットし、全てのマイグレーションを再実行します。
データベース中のデータは全て削除され、シードデータが入力されます。

npx supabase db reset

型定義の生成(Typescript)

ローカルのデータベーススキーマから型定義を生成します。
例:npx supabase gen types typescript --local > src/types/database.types.ts

npx supabase gen types typescript --local > [OUTPUT_FILE_NAME]

Edge Functions開発

関数ファイルの作成

新規で関数ファイルを作成します。
/supabase/functions/[FUNCTION_NAME]/index.tsが作成されます。

npx supabase functions new [FUNCTION_NAME]

関数ファイルの削除

ローカルファイル削除用のコマンドは存在しません。
手動でディレクトリごと関数ファイル([FUNCTION_NAME]/index.ts)を削除する必要があります。

環境変数の適用

ローカルのEdge Functionsで環境変数を扱う場合、serveコマンドで環境変数ファイルパスを渡します。
例:npx supabase functions serve --env-file supabase/.env.local

npx supabase functions serve --env-file [ENV_FILE_PATH]

デプロイ

Supabaseアカウントへの接続

Supabase CLIをSupabaseアカウントに接続する。
コマンド実行後アクセストークンが求められるためこちらから作成しておく。

npx supabase login

Supabaseリモートデータベースとのリンク

ローカル開発プロジェクトをデータベースにリンクします。
[REFERENCE_ID]はSupabaseのProject Settings > Generalより確認できます。
コマンド実行後のパスワードはデータベース作成時のパスワードを入力してください。

npx supabase link --project-ref [REFERENCE_ID]

Databaseデプロイ

リモートデータベースへマイグレーションをプッシュします。
(既に適用済みのマイグレーションはスキップされます。)

npx supabase db push

Edge Functionsデプロイ

リモートデータベースへEdge Functionsをプッシュします。

npx supabase functions deploy

関数名を指定して個別にデプロイも可能です。

npx supabase functions deploy [FUNCTION_NAME]

以下でリモートデータベース上のEdge Functionsの一覧を確認できます。

supabase functions list

リモートデータベース上のEdge Functionsを削除します。

supabase functions delete [FUNCTION_NAME]

Secretsデプロイ

リモートデータベースへ環境変数をプッシュします。
例:npx supabase secrets set --env-file ./supabase/.env.staging

npx supabase secrets set --env-file [ENV_FILE_PATH]

以下でリモートデータベースのSecrets設定状況を確認できます。

npx supabase secrets list

Discussion