Wrangler と Cloudflare Vite plugin ↗ のどちらを使う場合も、ローカル開発中にデータへアクセスする手順は同じです。一方、ローカルリソースにデータを投入する操作は、Wrangler CLI でのみ行えます。
wrangler dev または vite ↗ を実行すると、Miniflare が KV、D1、R2 などのリソースのローカル版を自動で作成します。サービスごとにローカルインスタンスを手作業で用意する必要はありません。ただし、作成直後のローカルリソースにはデータが入っていません。投入するには、--local フラグ付きの Wrangler コマンドを使います。ローカルリソースへの変更は、本番データには影響しません。
開発を始めた直後、ローカルリソースは空です。Wrangler CLI でデータを投入します。
npx wrangler kv key put <KEY> <VALUE> --binding=<BINDING> --local yarn wrangler kv key put <KEY> <VALUE> --binding=<BINDING> --local pnpm wrangler kv key put <KEY> <VALUE> --binding=<BINDING> --local npx wrangler kv bulk put <FILENAME.json> --binding=<BINDING> --localyarn wrangler kv bulk put <FILENAME.json> --binding=<BINDING> --localpnpm wrangler kv bulk put <FILENAME.json> --binding=<BINDING> --localnpx wrangler r2 object put <BUCKET>/<KEY> --file=<PATH_TO_FILE> --localyarn wrangler r2 object put <BUCKET>/<KEY> --file=<PATH_TO_FILE> --localpnpm wrangler r2 object put <BUCKET>/<KEY> --file=<PATH_TO_FILE> --localそのほかのメタデータ も指定できます。
npx wrangler d1 execute <DATABASE_NAME> --command="<SQL_QUERY>" --localyarn wrangler d1 execute <DATABASE_NAME> --command="<SQL_QUERY>" --localpnpm wrangler d1 execute <DATABASE_NAME> --command="<SQL_QUERY>" --localnpx wrangler d1 execute <DATABASE_NAME> --file=./schema.sql --localyarn wrangler d1 execute <DATABASE_NAME> --file=./schema.sql --localpnpm wrangler d1 execute <DATABASE_NAME> --file=./schema.sql --localDurable Objects には、KV、D1、R2 と異なり、ローカルデータを投入する CLI コマンドがありません。ローカル開発で Durable Objects にデータを入れるには、Durable Object インスタンスを作成し、状態を保存するメソッドを呼び出すアプリケーションコードを書きます。目的のデータを初期化する開発用エンドポイントやテスト用ルートを用意するのが一般的です。
デフォルトでは、Wrangler と Vite plugin はどちらも、プロジェクトディレクトリ内の .wrangler/state フォルダーにローカルバインディングのデータを保存します。このフォルダーは、KV 名前空間、R2 バケット、D1 データベース、Durable Objects など、すべてのローカルバインディング用のサブディレクトリにデータを格納します。
.wrangler/state フォルダーはいつでも削除でき、ローカル環境をリセットできます。次に dev コマンドを実行すると、Miniflare がフォルダーを再作成します。特定のサブフォルダーだけ削除して、対象を絞ったクリーンアップもできます。
ローカルストレージに別のディレクトリを使いたい場合は、Wrangler CLI または Vite plugin の設定で指定できます。
wrangler dev に --persist-to フラグを付けます。このフラグは、dev コマンドを実行するたびに指定します。
npx wrangler dev --persist-to <DIRECTORY>yarn wrangler dev --persist-to <DIRECTORY>pnpm wrangler dev --persist-to <DIRECTORY>--local と --persist-to を併用する
--local と --persist-to を併用するローカルデータの保存先を wrangler dev --persist-to <DIRECTORY> で指定した場合、ローカルデータを変更するほかの Wrangler コマンドでも、同じ --persist-to <DIRECTORY> を付けます(--local フラグも忘れずに付けます)。
たとえば、ローカルの KV 名前空間に、キー test、値 12345 を作成するには、次を実行します。
npx wrangler kv key put test 12345 --binding MY_KV_NAMESPACE --local --persist-to worker-localyarn wrangler kv key put test 12345 --binding MY_KV_NAMESPACE --local --persist-to worker-localpnpm wrangler kv key put test 12345 --binding MY_KV_NAMESPACE --local --persist-to worker-localこのコマンドは次を行います。
- Wrangler 設定ファイル で定義したバインディング
MY_KV_NAMESPACEに、KV キーtestを12345として設定します。 --persist-to worker-localにより、デフォルトの.wrangler/stateではなく worker-local ディレクトリにデータを作成します。--localフラグを付けて、ローカルデータを変更することを示します。
--persist-to を指定しない場合、Wrangler はローカルデータに .wrangler/state を使います。
Vite plugin のローカルデータ保存先を変更するには、Vite 設定ファイルの persistState オプション を設定します。
import { defineConfig } from "vite";
import { cloudflare } from "@cloudflare/vite-plugin";
export default defineConfig({
plugins: [
cloudflare({
persistState: { path: "./my-custom-directory" },
}),
],
});Wrangler と Vite plugin で同じ状態を共有したい場合は、同じ永続化パスを使うように設定します。