Wrangler v4 は、基盤システムと依存関係の更新に加え、Wrangler コマンドの一貫性と分かりやすさを高める改善に重点を置いたメジャーリリースです。これまでの Wrangler のメジャーバージョンは 基盤の書き換え ↗ や 再設計 ↗ でした。Wrangler のバージョン 4 の変更は、それよりかなり小さいです。いま Wrangler を使っているなら、作業の流れが大きく変わることはほとんどありません。
多くのユーザーは実質的な変更のないアップグレードになります。次の各節では、より重要な変更と、必要な場合の移行手順を説明します。
Worker プロジェクト内で最新の Wrangler v4 へアップグレードするには、次を実行します。
npm i -D wrangler@4yarn add -D wrangler@4pnpm add -D wrangler@4bun add -d wrangler@4アップグレード後、インストールを確認できます。
npx wrangler --versionyarn wrangler --versionpnpm wrangler --version-
更新された Node.js サポートポリシー: 2022 年にサポート終了(End-of-Life)となった Node.js v16 は、Wrangler v4 ではサポートされません。Wrangler は Node.js の 公式サポートライフサイクル ↗ に従います。
-
esbuild のバージョンアップ: Wrangler はデプロイ前に esbuild ↗ で Worker コードをバンドルしており、以前は esbuild v0.17.19 に固定されていました。Wrangler v4 は esbuild v0.24 を使い、動的なワイルドカードインポートに影響する場合があります。今後、Wrangler に同梱する
esbuildのバージョンは定期的に更新します。esbuildは 1.0.0 未満のツールなので、バンドルの挙動に破壊的変更が含まれることがあります。とくに、Wrangler のマイナーバージョンでesbuildのバージョンを上げることがあります。 -
コマンドの既定がローカルモード: ローカルとリモートのどちらでも実行できるコマンドは、すべてローカルが既定になります。API へ問い合わせるには
--remoteフラグが必要です。 -
非推奨のコマンドと設定を削除: レガシーなコマンド、フラグ、設定は削除されます。
Wrangler がサポートする Node.js のバージョンは、Node.js の公式ライフサイクル ↗ に合わせたものだけです。
- サポート対象: Current、Active LTS、Maintenance LTS
- サポート終了: Node.js v16(2022 年に EOL)
Wrangler のテストは v16 では実行されません。このバージョンを使い続けているユーザーは、未サポートの挙動に遭遇することがあります。サポートと Wrangler との互換性を続けるには、Node.js v16 を使っているユーザーは、サポート対象のバージョンへアップグレードする必要があります。
影響がありますか?
次のコマンドで Node.js のバージョンを確認します。
node --versionバージョンが v16 または v18 で始まる場合(例: v16.20.0 や v18.20.0)は、対応が必要です。
Node.js をアップグレードする には、Wrangler のシステム要件 を参照してください。Cloudflare は、最新の LTS バージョンの Node.js を使うことを推奨します。
Wrangler v4 では esbuild を v0.17.19 から v0.24 へ上げます。改善(RPC で using キーワードを使えるなど)と、バンドル挙動の変更があります。
- 動的インポート: ワイルドカードインポート(例:
import('./data/' + kind + '.json'))は、一致するファイルをすべて自動でバンドルに含めます。
ワイルドカードの動的インポートに依存しているユーザーは、不要なファイルがバンドルされることがあります。esbuild v0.19 より前は、動的パス付きの import 文(import('./data/' + kind + '.json') など)は、グロブパターン(*.json)に一致するファイルをすべてバンドルしませんでした。明示的に参照したファイル、または find_additional_modules で含めたファイルだけがバンドルされました。esbuild v0.19 以降、ワイルドカードインポートはグロブパターンに一致するファイルをすべて自動でバンドルします。不要なファイルがバンドルされることがあるので、ワイルドカードの動的インポートは避け、明示的なインポートを使う方がよい場合があります。
すべてのコマンドは 既定でローカルモード で実行されます。Wrangler には KV や R2 などのリソースへアクセスするコマンドが多くありますが、以前はローカルとリモートのどちらで動くかがコマンドごとに揃っていませんでした。たとえば D1 はローカルのデータストアへの問い合わせが既定で、API へ問い合わせるには --remote フラグが必要でした。一方 KV は、以前は API への問い合わせが既定(暗黙の --remote フラグ)で、ローカルのデータストアへ問い合わせるには --local フラグが必要でした。Wrangler 全体で挙動を揃えるため、各コマンドはいま --local フラグを既定で使い、API へ問い合わせるには明示的な --remote フラグが必要です。
例:
- 以前の挙動(Wrangler v3):
wrangler kv key getは既定でリモートへ問い合わせました。 - 新しい挙動(Wrangler v4):
wrangler kv key getは--remoteを指定しない限り、ローカルへ問い合わせます。
データストアの参照や書き込みに wrangler kv key や wrangler r2 object コマンドを使っている場合は、以前と同じ挙動にするには --remote フラグを追加する必要があります。
影響がありますか?
スクリプト、CI/CD パイプライン、手作業のワークフローで、次のコマンドを使っていないか確認してください。
KV コマンド:
wrangler kv key getwrangler kv key putwrangler kv key deletewrangler kv key listwrangler kv bulk putwrangler kv bulk delete
R2 コマンド:
wrangler r2 object getwrangler r2 object putwrangler r2 object delete
次に当てはまる場合は対応が必要です。
- リモート / 本番データとやり取りするつもりで、これらのコマンドを実行している。
--localまたは--remoteフラグなしで、これらのコマンドを使うスクリプトや CI/CD パイプラインがある。
コードベースと CI/CD 設定を検索します。
grep -rE "wrangler (kv|r2)" --include="*.sh" --include="*.yml" --include="*.yaml" --include="Makefile" --include="package.json" .対応方法:
Cloudflare アカウントとやり取りするコマンドには --remote を追加します。
# Before (Wrangler v3 - queried remote by default)
wrangler kv key get --binding MY_KV "my-key"
# After (Wrangler v4 - must specify --remote)
wrangler kv key get --binding MY_KV "my-key" --remoteWrangler v2 と Wrangler v3 で以前非推奨になった機能は、すべて削除されます。加えて、Wrangler v3 のリリース期間中に非推奨になった次の機能も削除されます。
- Legacy Assets(
wrangler dev/deploy --legacy-assetsまたは設定ファイルのlegacy_assetsプロパティ)。代わりに Workers Static Assets へ移行 することを推奨します。 - レガシーな Node.js 互換性(
wrangler dev/deploy --node-compatまたは設定ファイルのnode_compatプロパティ)。代わりにnodejs_compat互換性フラグ を使います。これには、レガシーなnode_compatポリフィルの機能と、ネイティブ実装の Node.js API が含まれます。 wrangler version。代わりにwrangler --versionで、現在の Wrangler のバージョンを確認します。getBindingsProxy()(import { getBindingsProxy } from "wrangler")。代わりにgetPlatformProxy()API を使います。引数はまったく同じです。usage_model。Workers Standard Pricing のロールアウト ↗ 以降、効果はありません。
影響がありますか?
Wrangler の設定ファイル(wrangler.toml、wrangler.json、または wrangler.jsonc)で、非推奨の設定を確認します。
# For TOML files
grep -E "(legacy_assets|node_compat|usage_model)\s*=" wrangler.toml
# For JSON files
grep -E "\"(legacy_assets|node_compat|usage_model)\"" wrangler.json wrangler.jsoncコマンドとスクリプトで、非推奨のフラグを確認します。
grep -rE "wrangler.*(--legacy-assets|--node-compat)" --include="*.sh" --include="*.yml" --include="*.yaml" --include="Makefile" --include="package.json" .コード内で、非推奨 API の利用を確認します。
grep -rE "getBindingsProxy" --include="*.js" --include="*.ts" --include="*.mjs" .次のいずれかが見つかった場合は対応が必要です。
| 非推奨 | 置き換え |
|---|---|
legacy_assets 設定または --legacy-assets フラグ |
Workers Static Assets へ移行 |
node_compat 設定または --node-compat フラグ |
nodejs_compat 互換性フラグ を使う |
usage_model 設定 |
削除する(効果はない) |
wrangler version コマンド |
wrangler --version を使う |
getBindingsProxy() のインポート |
getPlatformProxy() を使う(引数は同じ) |
wrangler publish コマンド |
wrangler deploy を使う |
wrangler generate コマンド |
npm create cloudflare@latest を使う |
wrangler pages publish コマンド |
wrangler pages deploy を使う |