| name | wrangler-cli |
| description | Use when user asks about wrangler commands, wrangler.toml configuration, local development, deployment, or CLI operations. Also use when user says wrangler コマンド, wrangler 設定, デプロイ方法, ローカル開発. Wrangler CLI の完全ガイドで、コマンド一覧、設定ファイル、環境管理、ローカル開発、wrangler dev/deploy/kv/r2/d1/pages/secret などのコマンド使用法を提供する。 |
| context | fork |
Wrangler CLI
概要
Wrangler は Cloudflare Workers、Pages、およびストレージサービス(KV、R2、D1)を
開発・デプロイするための公式 CLI ツール。2025年3月に v4.0.0 がリリースされた。
インストール
npm install -g wrangler
npm install --save-dev wrangler
npx wrangler <command>
基本コマンド
認証
wrangler login
wrangler whoami
wrangler logout
プロジェクト作成
npm create cloudflare@latest my-project
npm create cloudflare@latest my-app -- --template hono
wrangler init
ローカル開発
npx wrangler dev
npx wrangler dev --port 8787
npx wrangler dev --remote
npx wrangler dev --env staging
npx wrangler dev --persist
デプロイ
npx wrangler deploy
npx wrangler deploy --env production
npx wrangler deploy --dry-run
npx wrangler deploy src/worker.ts
ログ・デバッグ
npx wrangler tail [worker-name]
npx wrangler tail --format json
npx wrangler tail --env production
シークレット管理
wrangler secret put SECRET_NAME
wrangler secret put SECRET_NAME --env production
wrangler secret list
wrangler secret delete SECRET_NAME
デプロイ管理
wrangler deployments list
wrangler rollback
wrangler rollback <DEPLOYMENT_ID>
ストレージサービス
KV(Key-Value Store)
wrangler kv namespace create MY_KV
wrangler kv namespace create MY_KV --preview
wrangler kv key put --binding=MY_KV "key" "value"
wrangler kv key get --binding=MY_KV "key"
wrangler kv key delete --binding=MY_KV "key"
wrangler kv key list --binding=MY_KV
wrangler kv bulk put --binding=MY_KV ./data.json
R2(オブジェクトストレージ)
wrangler r2 bucket create my-bucket
wrangler r2 bucket list
wrangler r2 object put my-bucket/file.txt --file ./local.txt
wrangler r2 object get my-bucket/file.txt --file ./download.txt
wrangler r2 object delete my-bucket/file.txt
wrangler r2 object list my-bucket
D1(SQLite データベース)
wrangler d1 create my-database
wrangler d1 execute my-database --command "SELECT * FROM users;"
wrangler d1 execute my-database --file ./schema.sql
wrangler d1 execute my-database --local --command "SELECT 1;"
wrangler d1 migrations create my-database "add_users"
wrangler d1 migrations apply my-database
Pages
npx wrangler pages deploy ./dist
npx wrangler pages deploy ./dist --project-name my-site
npx wrangler pages deploy ./dist --branch preview
wrangler pages project list
wrangler pages deployment list --project-name my-site
wrangler.toml 設定
基本設定
name = "my-worker"
main = "src/index.ts"
compatibility_date = "2025-01-01"
compatibility_flags = ["nodejs_compat"]
workers_dev = true
account_id = "your-account-id"
ルーティング
route = "example.com/*"
routes = [
"example.com/api/*",
"api.example.com/*"
]
[[routes]]
pattern = "example.com/api/*"
zone_name = "example.com"
[[routes]]
pattern = "app.example.com/*"
custom_domain = true
環境変数
[vars]
API_URL = "https://api.example.com"
DEBUG = "false"
バインディング
[[kv_namespaces]]
binding = "MY_KV"
id = "xxxx"
preview_id = "yyyy"
[[r2_buckets]]
binding = "MY_BUCKET"
bucket_name = "my-bucket"
[[d1_databases]]
binding = "DB"
database_name = "my-db"
database_id = "xxxx"
[durable_objects]
bindings = [
{ name = "MY_DO", class_name = "MyDurableObject" }
]
[[migrations]]
tag = "v1"
new_classes = ["MyDurableObject"]
[[services]]
binding = "AUTH_SERVICE"
service = "auth-worker"
environment = "production"
[[queues.producers]]
binding = "MY_QUEUE"
queue = "my-queue"
[[queues.consumers]]
queue = "my-queue"
max_batch_size = 10
静的アセット(Workers Assets)
[assets]
directory = "./public"
binding = "ASSETS"
Cron Triggers
[triggers]
crons = ["0 * * * *", "30 8 * * 1"]
環境別設定
name = "my-worker"
[vars]
ENVIRONMENT = "development"
[env.staging]
name = "my-worker-staging"
vars = { ENVIRONMENT = "staging" }
[[env.staging.routes]]
pattern = "staging.example.com/*"
[env.production]
name = "my-worker-production"
vars = { ENVIRONMENT = "production" }
[[env.production.routes]]
pattern = "example.com/*"
カスタムビルド
[build]
command = "npm run build"
cwd = "."
watch_dir = "src"
[build.upload]
format = "modules"
main = "./dist/worker.mjs"
ローカル開発
.dev.vars
ローカル専用の環境変数ファイル(.gitignore 推奨):
API_KEY=dev-secret-key
DATABASE_URL=localhost:5432
Miniflare 3
wrangler dev は Miniflare 3.0(workerd ベース)を使用:
- 本番ランタイムと高い互換性
- KV、R2、D1 のローカルエミュレーション
--persist で状態を永続化
v4 の変更点
| 項目 | v3 | v4 |
|---|
| プロジェクト作成 | wrangler generate | npm create cloudflare@latest |
| デプロイ | wrangler publish | wrangler deploy |
| Node.js 要件 | v16+ | v18+ |
| 推奨設定ファイル | wrangler.toml | wrangler.jsonc |
削除されたコマンド
wrangler generate → npm create cloudflare@latest
wrangler publish → wrangler deploy
wrangler route → routes 設定
トラブルシューティング
認証エラー
wrangler logout && wrangler login
export CLOUDFLARE_API_TOKEN="your-token"
デプロイ失敗
wrangler deploy --verbose
wrangler deploy --dry-run
ローカル開発の問題
rm -rf .wrangler
rm -rf .wrangler/state
公式リソース