118
111

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Firestore エミュレータのデータをローカル環境で import/export する

Last updated at Posted at 2020-02-24

概要

Firebase エミュレータで Firestore の import/export ができるようになったので、導入方法について紹介します。これまで、エミュレータを再起動する度にデータが初期化されていていましたが、特定のタイミングで export して起動時に import できるので、毎回テストデータを取り込む作業がなくなるなど、開発効率が上がります。

導入方法

本機能は firebase-tools の 7.14.0 で対応したので、 firebase-tools を再インストールして firebase のバージョンが 7.14.0 以上であることを確認します。

npm install -g firebase-tools
firebase --version
7.14.0

以下のコマンドを叩いて Export コマンドのヘルプが正常に表示されれば OK です。

firebase emulators:export --help
Usage: firebase emulators:export [options] <path>

export data from running emulators

Options:
  --only <emulators>  only specific emulators. This is a comma separated list of emulator names. Valid options are: ["functions","firestore","database","hosting","pubsub"]
  --force             Overwrite any export data in the target directory.
  -h, --help          output usage information

実行方法

Firestore エミュレータのデータを export

firebase emulators:export コマンドで data ディレクトリ配下に export されます

firebase emulators:export ./data/

すでにデータがある場合には上書きするか確認されますが、毎回上書きで問題なければ --force オプションを指定します。

firebase emulators:export --force ./data/

Export されたデータを読み込んで Firestore エミュレータ起動

firebase emulators:start コマンドで --import オプションをつけて export 先の data ディレクトリを指定することで、データを読み込んで起動できます。

firebase emulators:start --import=./data --only firestore

必要に応じて、上記コマンドを package.json の scripts に追加したり(Web 開発の場合)、 data ディレクトリを .gitignore に追加しておきましょう。

まとめ

以上、 Firestore エミュレータデータの import/export 方法を紹介しました。

特定の検証ケースごと(インストール直後、チュートリアル直後、インストール翌日の起動時など)に export 先を分けると、よりデバッグが捗りそうですね。

関連記事

118
111
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
118
111

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?