| name | wrangler-cli-knowledge |
| description | Use when user asks about Wrangler, Cloudflare Workers, Durable Objects, Queues, Hyperdrive, Service Bindings, or custom build configurations. Cloudflare Wrangler CLI の仕様と使い方に関する knowledge を提供し、Durable Objects, Queues, Hyperdrive, Service Bindings, カスタムビルド設定 (Webpack/esbuild) について回答する。 |
| context | fork |
| allowed-tools | [] |
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 にビルドスクリプトを追加:
"scripts": {
"build": "webpack"
}
wrangler.toml に設定を追加:
[build]
command = "npm run build"
[build.upload]
main = "./dist/worker.js"
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"