コンテンツにスキップ

ローカル開発

Cloudflare Workersおよびほとんどの接続リソースは、完全にローカルで開発およびテストできるため、ローカルで構築したアプリケーションが本番環境でも同じように動作することに自信を持つことができます。これにより、フィードバックループが速くなり、リモートリソースに対してテストする必要がなくなるため、より効率的かつ効果的に作業できます。ローカル開発は、Cloudflare Workersで使用されるのと同じ本番ランタイムであるworkerdに対して実行されます。

wrangler devを使用してローカルでWorkersをテストすることに加えて、Miniflareを使用することで、R2KVD1、およびDurable Objectsなど、他のDeveloper Platform製品をローカルでテストできます。

ローカル開発サーバーの開始

Wranglerは、Workerの開発のためにローカルサーバーを起動するdevコマンドを提供します。npmがインストールされていることを確認し、Workerアプリケーションを含むフォルダーで以下を実行します:

Terminal window
npx wrangler dev

wrangler devは、Workerをローカルマシン上で直接実行します。wrangler devは、KV、Durable Objects、WebSocketsなどの追加リソースに対してWorkerをテストできるシミュレーターであるMiniflareworkerdの組み合わせを使用します。

異なる環境でのサポートされているリソースバインディング

製品ローカル開発サポートリモート開発サポート
AI1
アナリティクスエンジン
ブラウザレンダリング
D1
Durable Objects
メールバインディング
Hyperdrive
KV
mTLS
キュー
R2
レート制限
サービスバインディング(複数のWorker)
ベクトル化

ローカルでサポートされていないバインディングについては、wrangler--remoteコマンドを使用する必要があります。例えば、wrangler dev --remoteのように。

ローカルデータを扱う

wrangler devを実行すると、KV、Durable Objects、D1、およびR2などのリソースはローカルに保存され、永続化され、本番リソースには影響しません。

wrangler.tomlでのバインディングの使用

Wranglerは、wrangler.toml 設定ファイルに見つかったバインディングのローカルバージョンを自動的に作成します。これらのローカルリソースには最初はデータが含まれていないため、Wranglerコマンドと--localフラグを使用して手動でデータを追加する必要があります。

wrangler devを実行すると、Wranglerはローカルリソースを.wrangler/stateフォルダーに保存します。このフォルダーは自動的に作成されます。

ディレクトリを指定したい場合は、wrangler dev--persist-toフラグを次のように使用できます:

Terminal window
npx wrangler dev --persist-to <DIRECTORY>

これを使用すると、すべてのローカルストレージとキャッシュが.wranglerの代わりに指定したディレクトリに書き込まれます。

--localフラグの使用

次のWranglerコマンドには、開発中にローカルデータを作成、更新、削除するための--localフラグがあります:

コマンド
d1 execute
kv:key
kv:bulk
r2 object

wrangler devでカスタムフォルダーを指定するために--persist-toを使用する場合、上記のコマンドを実行する際にも同じディレクトリ名で--persist-toを追加する必要があります。例えば、CLIを介してカスタムKVキーをローカル名前空間に入れるには、次のように実行します:

Terminal window
npx wrangler kv:key put test 12345 --binding MY_KV_NAMESPACE --local --persist-to worker-local

wrangler kv:key putを実行すると、wrangler.tomlで指定されたバインディングMY_KV_NAMESPACEに対して、ローカル名前空間に新しいキーtestと値12345が作成されます。この例のコマンドは、--persist-toを使用してローカル永続化ディレクトリをworker-localに設定し、データが正しい場所に作成されるようにします。--persist-toが設定されていない場合、データは.wranglerフォルダーに作成されます。

Wranglerのローカルストレージをクリアする

ローカルストレージを完全にクリアする必要がある場合は、.wrangler/stateフォルダーを削除します。特定のリソースフォルダーを.wrangler/state内で削除することもできます。

削除されたフォルダーは、次回wrangler devを実行したときに自動的に作成されます。

ローカル専用の環境変数

wrangler devを実行すると、wrangler.tomlの変数は、Workerのルートディレクトリにある.dev.varsファイルに定義された値によって自動的に上書きされます。これは、ソース管理にチェックインしたくない値を提供するのに便利です。

Terminal window
API_HOST = "localhost:4000"
API_ACCOUNT_ID = "local_example_user"

リモートリソースとバインディングを使用して開発する

リモートリソースとバインディングに対して開発したい場合があります。リモートモードでwrangler devを実行するには、--remoteフラグを追加します。これにより、コードとリソースの両方がリモートで実行されます:

Terminal window
npx wrangler dev --remote

KVやR2などの一部の製品では、wrangler dev --remoteで使用されるリモートリソースは、wrangler.tomlpreview_id(KVの場合)やpreview_bucket name(R2の場合)などのプレビューID/名前で指定する必要があります。リモートモード(プレビュー)で使用されるリソースは、開発中に本番データが変更されるのを防ぐために、本番で使用されるリソースとは異なる場合があります。wrangler dev --remoteで本番データを使用するには、リソースのプレビューID/名前を本番リソースのID/名前に設定します。

wrangler devのカスタマイズ

wrangler devの動作をニーズに合わせてカスタマイズできます。利用可能な設定オプションについては、wrangler devのドキュメントを参照してください。

関連リソース

  • D1ローカル開発 - D1のローカル開発とテストに関する公式ガイド。
  • DevTools - WorkerをローカルでデバッグするためのDevToolsの使用に関するガイド。

Footnotes

  1. Workers AIを使用すると、AIモデルを実行するために常にCloudflareアカウントにアクセスし、ローカル開発中でも使用料金が発生します。