mcpField
W
wrangler

wrangler

github.com/cloudflareクラウド・DevOps5.4k104 回インストール今日更新
リポジトリ

wrangler について

Cloudflare Workers と関連リソースを開発、デプロイ、管理する Wrangler CLI の利用ガイドです。設定、リソース管理、ローカル開発で使うコマンドと手順をまとめています。

主な機能

  1. 01Worker の初期化、開発、デプロイ
  2. 02設定検証と TypeScript 型生成
  3. 03KV、R2、D1 などのリソース管理
  4. 04ライブログの確認とバージョンのロールバック

活用シーン

  1. 01Worker のローカル実行とデプロイ
  2. 02バインディング設定と型生成
  3. 03データベース、バケット、キューの管理
  4. 04設定やデプロイの問題調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cloudflare/cloudflare-docs --skill wrangler

インストール後、Claude Code で/wranglerを入力して読み込まれたか確認します。

詳細

Wrangler CLI

Cloudflare Workers と関連リソースをデプロイ、開発、管理します。

最初に:Wrangler のインストールを確認

wrangler --version  # Requires v4.x+

インストールされていない場合:

npm install -D wrangler@latest

主なガイドライン

  • wrangler.jsonc を使用する:TOML より JSON 設定を優先してください。新しい機能は JSON のみで利用できます。
  • compatibility_date を設定する:最近の日付(過去 30 日以内)を使用してください。https://developers.cloudflare.com/workers/configuration/compatibility-dates/ を確認してください。
  • 設定変更後に型を生成する:wrangler types を実行して TypeScript バインディングを更新してください。
  • ローカル開発ではローカルストレージがデフォルトです:remote: true を指定しない限り、バインディングはローカルでシミュレーションされます。
  • デプロイ前に設定を検証する:wrangler check を実行し、早い段階でエラーを検出してください。
  • ステージング/本番環境には環境を使用する:設定に env.staging と env.production を定義してください。

クイックスタート:新しい Worker

# Initialize new project
npx wrangler init my-worker

# Or with a framework
npx create-cloudflare@latest my-app

クイックリファレンス:主なコマンド

タスクコマンド
ローカル開発サーバーを起動wrangler dev
Cloudflare にデプロイwrangler deploy
デプロイのドライランwrangler deploy --dry-run
TypeScript の型を生成wrangler types
設定を検証wrangler check
ライブログを表示wrangler tail
Worker を削除wrangler delete
認証状態を確認wrangler whoami

設定(wrangler.jsonc)

最小限の設定
{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "name": "my-worker",
  "main": "src/index.ts",
  "compatibility_date": "2026-01-01"
}
バインディングを含む完全な設定
{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "name": "my-worker",
  "main": "src/index.ts",
  "compatibility_date": "2026-01-01",
  "compatibility_flags": ["nodejs_compat_v2"],

  // Environment variables
  "vars": {
    "ENVIRONMENT": "production"
  },

  // KV Namespace
  "kv_namespaces": [
    { "binding": "KV", "id": "<KV_NAMESPACE_ID>" }
  ],

  // R2 Bucket
  "r2_buckets": [
    { "binding": "BUCKET", "bucket_name": "my-bucket" }
  ],

  // D1 Database
  "d1_databases": [
    { "binding": "DB", "database_name": "my-db", "database_id": "<DB_ID>" }
  ],

  // Workers AI (always remote)
  "ai": { "binding": "AI" },

  // Vectorize
  "vectorize": [
    { "binding": "VECTOR_INDEX", "index_name": "my-index" }
  ],

  // Hyperdrive
  "hyperdrive": [
    { "binding": "HYPERDRIVE", "id": "<HYPERDRIVE_ID>" }
  ],

  // Durable Objects
  "durable_objects": {
    "bindings": [
      { "name": "COUNTER", "class_name": "Counter" }
    ]
  },

  // Cron triggers
  "triggers": {
    "crons": ["0 * * * *"]
  },

  // Environments
  "env": {
    "staging": {
      "name": "my-worker-staging",
      "vars": { "ENVIRONMENT": "staging" }
    }
  }
}
設定から型を生成
# Generate worker-configuration.d.ts
wrangler types

# Custom output path
wrangler types ./src/env.d.ts

# Check types are up to date (CI)
wrangler types --check

ローカル開発

開発サーバーを起動
# Local mode (default) - uses local storage simulation
wrangler dev

# With specific environment
wrangler dev --env staging

# Force local-only (disable remote bindings)
wrangler dev --local

# Remote mode - runs on Cloudflare edge (legacy)
wrangler dev --remote

# Custom port
wrangler dev --port 8787

# Live reload for HTML changes
wrangler dev --live-reload

# Test scheduled/cron handlers
wrangler dev --test-scheduled
# Then visit: http://localhost:8787/__scheduled
ローカル開発でリモートバインディングを使用

ローカルで実行中に実際のリソースへ接続するには、バインディング設定で remote: true を使用します。

{
  "r2_buckets": [
    { "binding": "BUCKET", "bucket_name": "my-bucket", "remote": true }
  ],
  "ai": { "binding": "AI", "remote": true },
  "vectorize": [
    { "binding": "INDEX", "index_name": "my-index", "remote": true }
  ]
}

推奨されるリモートバインディング:AI(必須)、Vectorize、Browser Rendering、mTLS、Images。

ローカルシークレット

ローカル開発用のシークレットを設定するには、.dev.vars を作成します。

API_KEY=local-dev-key
DATABASE_URL=postgres://localhost:5432/dev

デプロイ

Worker をデプロイ
# Deploy to production
wrangler deploy

# Deploy specific environment
wrangler deploy --env staging

# Dry run (validate without deploying)
wrangler deploy --dry-run

# Keep dashboard-set variables
wrangler deploy --keep-vars

# Minify code
wrangler deploy --minify
シークレットを管理
# Set secret interactively
wrangler secret put API_KEY

# Set from stdin
echo "secret-value" | wrangler secret put API_KEY

# List secrets
wrangler secret list

# Delete secret
wrangler secret delete API_KEY

# Bulk secrets from JSON file
wrangler secret bulk secrets.json
バージョンとロールバック
# List recent versions
wrangler versions list

# View specific version
wrangler versions view <VERSION_ID>

# Rollback to previous version
wrangler rollback

# Rollback to specific version
wrangler rollback <VERSION_ID>

KV(Key-Value Store)

名前空間を管理
# Create namespace
wrangler kv namespace create MY_KV

# List namespaces
wrangler kv namespace list

# Delete namespace
wrangler kv namespace delete --namespace-id <ID>
キーを管理
# Put value
wrangler kv key put --namespace-id <ID> "key" "value"

# Put with expiration (seconds)
wrangler kv key put --namespace-id <ID> "key" "value" --expiration-ttl 3600

# Get value
wrangler kv key get --namespace-id <ID> "key"

# List keys
wrangler kv key list --namespace-id <ID>

# Delete key
wrangler kv key delete --namespace-id <ID> "key"

# Bulk put from JSON
wrangler kv bulk put --namespace-id <ID> data.json
設定バインディング
{
  "kv_namespaces": [
    { "binding": "CACHE", "id": "<NAMESPACE_ID>" }
  ]
}

R2(Object Storage)

バケットを管理
# Create bucket
wrangler r2 bucket create my-bucket

# Create with location hint
wrangler r2 bucket create my-bucket --location wnam

# List buckets
wrangler r2 bucket list

# Get bucket info
wrangler r2 bucket info my-bucket

# Delete bucket
wrangler r2 bucket delete my-bucket
オブジェクトを管理
# Upload object
wrangler r2 object put my-bucket/path/file.txt --file ./local-file.txt

# Download object
wrangler r2 object get my-bucket/path/file.txt

# Delete object
wrangler r2 object delete my-bucket/path/file.txt
設定バインディング
{
  "r2_buckets": [
    { "binding": "ASSETS", "bucket_name": "my-bucket" }
  ]
}

D1(SQL Database)

データベースを管理
# Create database
wrangler d1 create my-database

# Create with location
wrangler d1 create my-database --location wnam

# List databases
wrangler d1 list

# Get database info
wrangler d1 info my-database

# Delete database
wrangler d1 delete my-database
SQL を実行
# Execute SQL command (remote)
wrangler d1 execute my-database --remote --command "SELECT * FROM users"

# Execute SQL file (remote)
wrangler d1 execute my-database --remote --file ./schema.sql

# Execute locally
wrangler d1 execute my-database --local --command "SELECT * FROM users"
マイグレーション
# Create migration
wrangler d1 migrations create my-database create_users_table

# List pending migrations
wrangler d1 migrations list my-database --local

# Apply migrations locally
wrangler d1 migrations apply my-database --local

# Apply migrations to remote
wrangler d1 migrations apply my-database --remote
エクスポート/バックアップ
# Export schema and data
wrangler d1 export my-database --remote --output backup.sql

# Export schema only
wrangler d1 export my-database --remote --output schema.sql --no-data
設定バインディング
{
  "d1_databases": [
    {
      "binding": "DB",
      "database_name": "my-database",
      "database_id": "<DATABASE_ID>",
      "migrations_dir": "./migrations"
    }
  ]
}

Vectorize(ベクトルデータベース)

インデックスを管理
# Create index with dimensions
wrangler vectorize create my-index --dimensions 768 --metric cosine

# Create with preset (auto-configures dimensions/metric)
wrangler vectorize create my-index --preset @cf/baai/bge-base-en-v1.5

# List indexes
wrangler vectorize list

# Get index info
wrangler vectorize get my-index

# Delete index
wrangler vectorize delete my-index
ベクトルを管理
# Insert vectors from NDJSON file
wrangler vectorize insert my-index --file vectors.ndjson

# Query vectors
wrangler vectorize query my-index --vector "[0.1, 0.2, ...]" --top-k 10
設定バインディング
{
  "vectorize": [
    { "binding": "SEARCH_INDEX", "index_name": "my-index" }
  ]
}

Hyperdrive(データベースアクセラレーター)

設定を管理
# Create config
wrangler hyperdrive create my-hyperdrive \
  --connection-string "postgres://user:pass@host:5432/database"

# List configs
wrangler hyperdrive list

# Get config details
wrangler hyperdrive get <HYPERDRIVE_ID>

# Update config
wrangler hyperdrive update <HYPERDRIVE_ID> --origin-password "new-password"

# Delete config
wrangler hyperdrive delete <HYPERDRIVE_ID>
設定バインディング
{
  "compatibility_flags": ["nodejs_compat_v2"],
  "hyperdrive": [
    { "binding": "HYPERDRIVE", "id": "<HYPERDRIVE_ID>" }
  ]
}

Workers AI

モデルを一覧表示
# List available models
wrangler ai models

# List finetunes
wrangler ai finetune list
設定バインディング
{
  "ai": { "binding": "AI" }
}

注:Workers AI は常にリモートで実行され、ローカル開発でも使用料金が発生します。


Queues

キューを管理
# Create queue
wrangler queues create my-queue

# List queues
wrangler queues list

# Delete queue
wrangler queues delete my-queue

# Add consumer to queue
wrangler queues consumer add my-queue my-worker

# Remove consumer
wrangler queues consumer remove my-queue my-worker
設定バインディング
{
  "queues": {
    "producers": [
      { "binding": "MY_QUEUE", "queue": "my-queue" }
    ],
    "consumers": [
      {
        "queue": "my-queue",
        "max_batch_size": 10,
        "max_batch_timeout": 30
      }
    ]
  }
}

Containers

イメージをビルドしてプッシュ
# Build container image
wrangler containers build -t my-app:latest .

# Build and push in one command
wrangler containers build -t my-app:latest . --push

# Push existing image to Cloudflare registry
wrangler containers push my-app:latest
コンテナを管理
# List containers
wrangler containers list

# Get container info
wrangler containers info <CONTAINER_ID>

# Delete container
wrangler containers delete <CONTAINER_ID>
イメージを管理
# List images in registry
wrangler containers images list

# Delete image
wrangler containers images delete my-app:latest
外部レジストリを管理
# List configured registries
wrangler containers registries list

# Configure external registry (e.g., ECR)
wrangler containers registries configure <DOMAIN> \
  --public-credential <AWS_ACCESS_KEY_ID>

# Delete registry configuration
wrangler containers registries delete <DOMAIN>

Workflows

ワークフローを管理
# List workflows
wrangler workflows list

# Describe workflow
wrangler workflows describe my-workflow

# Trigger workflow instance
wrangler workflows trigger my-workflow

# Trigger with parameters
wrangler workflows trigger my-workflow --params '{"key": "value"}'

# Delete workflow
wrangler workflows delete my-workflow
ワークフローインスタンスを管理
# List instances
wrangler workflows instances list my-workflow

# Describe instance
wrangler workflows instances describe my-workflow <INSTANCE_ID>

# Terminate instance
wrangler workflows instances terminate my-workflow <INSTANCE_ID>
設定バインディング
{
  "workflows": [
    {
      "binding": "MY_WORKFLOW",
      "name": "my-workflow",
      "class_name": "MyWorkflow"
    }
  ]
}

Pipelines

パイプラインを管理
# Create pipeline
wrangler pipelines create my-pipeline --r2 my-bucket

# List pipelines
wrangler pipelines list

# Show pipeline details
wrangler pipelines show my-pipeline

# Update pipeline
wrangler pipelines update my-pipeline --batch-max-mb 100

# Delete pipeline
wrangler pipelines delete my-pipeline
設定バインディング
{
  "pipelines": [
    { "binding": "MY_PIPELINE", "pipeline": "my-pipeline" }
  ]
}

Secrets Store

ストアを管理
# Create store
wrangler secrets-store store create my-store

# List stores
wrangler secrets-store store list

# Delete store
wrangler secrets-store store delete <STORE_ID>
ストア内のシークレットを管理
# Add secret to store
wrangler secrets-store secret put <STORE_ID> my-secret

# List secrets in store
wrangler secrets-store secret list <STORE_ID>

# Get secret
wrangler secrets-store secret get <STORE_ID> my-secret

# Delete secret from store
wrangler secrets-store secret delete <STORE_ID> my-secret
設定バインディング
{
  "secrets_store_secrets": [
    {
      "binding": "MY_SECRET",
      "store_id": "<STORE_ID>",
      "secret_name": "my-secret"
    }
  ]
}

Pages(フロントエンドのデプロイ)

# Create Pages project
wrangler pages project create my-site

# Deploy directory to Pages
wrangler pages deploy ./dist

# Deploy with specific branch
wrangler pages deploy ./dist --branch main

# List deployments
wrangler pages deployment list --project-name my-site

オブザーバビリティ

ログを追跡
# Stream live logs
wrangler tail

# Tail specific Worker
wrangler tail my-worker

# Filter by status
wrangler tail --status error

# Filter by search term
wrangler tail --search "error"

# JSON output
wrangler tail --format json
ログ記録を設定
{
  "observability": {
    "enabled": true,
    "head_sampling_rate": 1
  }
}

テスト

Vitest によるローカルテスト
npm install -D @cloudflare/vitest-pool-workers vitest

vitest.config.ts:

import { defineWorkersConfig } from "@cloudflare/vitest-pool-workers/config";

export default defineWorkersConfig({
  test: {
    poolOptions: {
      workers: {
        wrangler: { configPath: "./wrangler.jsonc" },
      },
    },
  },
});
スケジュールイベントをテスト
# Enable in dev
wrangler dev --test-scheduled

# Trigger via HTTP
curl http://localhost:8787/__scheduled

トラブルシューティング

よくある問題
問題解決策
command not found: wranglerインストール:npm install -D wrangler
認証エラーwrangler login を実行
設定の検証エラーwrangler check を実行
設定変更後の型エラーwrangler types を実行
ローカルストレージが保持されない.wrangler/state ディレクトリを確認
Worker でバインディングが未定義バインディング名が設定と完全に一致していることを確認
デバッグコマンド
# Check auth status
wrangler whoami

# Validate config
wrangler check

# View config schema
wrangler docs configuration

ベストプラクティス

  1. wrangler.jsoncをバージョン管理する:Worker の設定の信頼できる唯一の情報源として扱います。
  2. 自動プロビジョニングを使用する:デプロイ時にリソースを自動作成するには、リソース ID を省略します。
  3. CI でwrangler typesを実行する:バインディングの不一致を検出するため、ビルドステップに追加します。
  4. 環境を使用する:env.stagingとenv.productionでステージング環境と本番環境を分けます。
  5. compatibility_dateを設定する:新しいランタイム機能を利用するため、四半期ごとに更新します。
  6. ローカルのシークレットには.dev.varsを使用する:シークレットを設定ファイルにコミットしないでください。
  7. まずローカルでテストする:デプロイ前に、ローカルバインディングを使ってwrangler devを実行します。
  8. 大規模なデプロイの前に--dry-runを使用する:デプロイせずに変更を検証します。

コメント