Wrangler CLI Knowledge
Cloudflare Wrangler CLI の仕様と使い方に関する包括的な知識を提供するスキル。
概要
Wrangler は Cloudflare Developer Platform のコマンドラインインターフェース(CLI)ツールです。Cloudflare Workers やその他の Developer Platform 製品の作成、開発、テスト、デプロイに使用されます。
主要なコンポーネント
Durable Objects
コンピューティングとストレージを組み合わせた Cloudflare Workers の特殊なタイプです。
グローバルに一意の ID を持つインスタンス。 シングルスレッドで動作し、複数のクライアント間で調整が可能。 トランザクション的で強力な一貫性のあるストレージ。 WebSocket をサポートし、低遅延なリアルタイム通信が可能。
* リアルタイム共同編集ツール、チャットアプリケーション、ゲームサーバー。
Queues
メッセージを確実に送受信できるようにするグローバルメッセージキューイングサービスです。
操作のバッファリングまたはバッチ処理。 リクエストからの重い処理のオフロード。 Workers 間のデータ送信。 少なくとも1回のメッセージ配信を保証。
* 非同期タスク処理、イベント駆動型アプリケーション。
Hyperdrive
既存の地域データベース(PostgreSQL, MySQL 等)へのクエリを高速化し、グローバル分散型データベースのように扱えるサービスです。
接続プーリング。 インテリジェントなクエリキャッシュ。 * リクエストを最も近い接続プールにルーティングして遅延を削減。
* 既存データベースのグローバルパフォーマンス向上。
Service Bindings
Workers が他の Workers や Cloudflare リソースと内部的に通信するためのメカニズムです。
Cloudflare ネットワーク内での高速な内部接続。 追加の遅延やオーバーヘッドがない。 * マイクロサービスアーキテクチャにおける関心の分離を可能にする。
* 内部 API 呼び出し、共通コンポーネントの共有。
Wrangler の基本操作
インストール
npm install -g wrangler
認証
wrangler login
プロジェクトの初期化
wrangler init my-worker
デプロイ
wrangler deploy
ローカル開発
wrangler dev
カスタムビルド (Custom Build)
Wrangler はデフォルトで esbuild を使用して Worker をバンドルしますが、カスタムビルドコマンドを使用して Webpack やその他のツールを使用するように設定することも可能です。
設定 (wrangler.toml)
[build] セクションを使用してカスタムビルドを定義します。
[build]
command = "npm run build"
cwd = "."
watch = ["./src"]
[build.upload]
main = "./dist/index.js"
主要なオプション
command: ビルドを実行するためのコマンド。wrangler dev や wrangler deploy の実行前に呼び出されます。
cwd: コマンドを実行するディレクトリ。
watch: 変更を監視するディレクトリまたはファイルのリスト。
upload.main: ビルド後に生成される、デプロイ対象のメインスクリプトのパス。
Webpack の使用
Wrangler v2 以降、type = "webpack" はサポートされなくなりました。Webpack を使用する場合は、カスタムビルドコマンドとして設定します。
package.json にビルドスクリプトを追加:
``json "scripts": { "build": "webpack" } ``
wrangler.toml に設定を追加:
```toml [build] command = "npm run build"
[build.upload] main = "./dist/worker.js" # Webpack の出力先に合わせる ```
esbuild の詳細設定
Wrangler のデフォルトの esbuild 挙動をカスタマイズしたい場合(例: プラグインの追加など)も、カスタムビルドスクリプトを作成して command から呼び出す手法が一般的です。
設定 (wrangler.toml)
Durable Objects の設定
[[durable_objects.bindings]]
name = "MY_DURABLE_OBJECT"
class_name = "MyDurableObject"
Queues の設定
[[queues.producers]]
queue = "my-queue"
binding = "MY_QUEUE"
[[queues.consumers]]
queue = "my-queue"
Hyperdrive の設定
[[hyperdrive]]
binding = "MY_HYPERDRIVE"
id = "hyperdrive-id"
Service Bindings の設定
[[services]]
binding = "AUTH_SERVICE"
service = "auth-worker"