Wrangler のバージョン間の違い、特に非推奨と破壊的変更を確認します。
Workers Sites の使用は非推奨です。代わりに Workers Static Assets へ移行してください。Wrangler での Workers Sites のサポートは、将来のバージョンで削除されます。
Wrangler 設定の legacy_env プロパティで有効にする Service Environments ↗ の使用は非推奨です。代わりに Wrangler Environments へ移行してください。Wrangler での Service Environments のサポートは、将来のバージョンで削除されます。
次のコマンドは、Wrangler v3 時点で非推奨です。将来のバージョンで完全に削除されます。
wrangler generate コマンドは非推奨ですが、v3 ではまだ使えます。wrangler generate は v4 で完全に削除されます。
新しい Workers および Pages プロジェクトには npm create cloudflare@latest を使います。
wrangler publish コマンドは非推奨ですが、v3 ではまだ使えます。wrangler publish は v4 で完全に削除されます。
Workers のデプロイには npx wrangler deploy を使います。
wrangler pages publish コマンドは非推奨ですが、v3 ではまだ使えます。wrangler pages publish は v4 で完全に削除されます。
Pages のデプロイには wrangler pages deploy を使います。
代わりに wrangler --version で、いまの Wrangler のバージョンを確認します。
v3 の wrangler dev はデフォルトでローカルなので、このオプションは不要です。
v3 の wrangler dev はデフォルトでローカルなので、このオプションは不要です。
wrangler dev はデフォルトでデータを自動的に永続化するため、このオプションは不要です。
これらのオプションがあると、wrangler pages dev が静的アセット配信における本番の挙動を正確に再現できません。そのため非推奨です。Wrangler に別の上流 dev サーバーへプロキシさせるのではなく、静的アセットをディレクトリへビルドし、wrangler pages dev <directory> でそのディレクトリを指定すると、より正確な挙動を再現できます。
Workers assets へ移行 ↗ してください。
代わりに nodejs_compat 互換フラグ ↗ を使います。レガシーな node_compat ポリフィルの機能と、ネイティブ実装の Node.js API の両方が含まれます。
Workers Standard Pricing のロールアウト ↗ 以降、効果はありません。
Wrangler v2 では、設定用の新しいフィールドと、Worker の開発・デプロイ向けの新機能が追加され、一部の冗長なフィールドは非推奨になりました。
wrangler.tomlは必須ではなくなりました。devとpublishは CLI 引数を受け付けます。tailは任意の Worker 名で実行できます。initはプロジェクトのボイラープレートを作成します。varsの JSON バインディング。wrangler devのローカルモード。- モジュールシステム(modules 形式と service worker 形式の両方の Worker)。
- DevTools。
- TypeScript サポート。
- 開発環境をインターネット上で共有できます。
- より広いプラットフォーム互換性。
- 開発者向けホットキー。
- 設定の検証の改善。
次の動画では、Wrangler v2 の主な変更を説明し、作業の流れを速くする方法を紹介します。
必須ではなくなったよくあるフィールドは、次の一覧を参照してください。
typeは不要になりました。Wrangler が正しいプロジェクトタイプを自動で推測します。zone_idは不要になりました。ルートから直接導出できます。build.upload.formatは使われません。形式はコードから自動で推測されます。build.upload.mainとbuild.upload.dirは不要になりました。Worker のエントリーポイントになるトップレベルのmainフィールドを使います。site.entry-pointは不要になりました。エントリーポイントはmainフィールドで指定します。webpack_configとwebpackプロパティはサポートされません。Wrangler バージョン 1 の webpack プロジェクトを移行する を参照してください。 サポートされなくなった Wrangler v1 のコマンドは次のとおりです。wrangler preview— ローカル環境で Worker を実行するにはwrangler devコマンドを使います。wrangler generate— スターターテンプレートを使いたい場合は、GitHub リポジトリをクローンして手動で初期化します。wrangler route— ルートは Wrangler 設定ファイル で定義します。wrangler report— バグを見つけた場合は Wrangler issues ↗ で報告します。wrangler build— Worker のバンドル結果にアクセスしたい場合はwrangler deploy --outdir=path/to/outputを使います。
次は、Wrangler 設定ファイル に追加できる新しいフィールドです。
-
main:string、任意mainフィールドは、Worker のエントリーポイントを指定します。従来の service worker 形式でも、推奨される新しい modules 形式でも構いません。エントリーポイントは明示的に必須になり、mainフィールドで設定するか、コマンドラインで直接渡せます(例:wrangler dev index.js)。このフィールドは、レガシーのbuild.upload.mainフィールド(modules 形式の Worker にだけ適用)を置き換えます。 -
rules:array、任意rulesフィールドは、モジュールタイプとファイルパターンの対応の配列です。特定のファイルを JavaScript とは別に解釈するよう Wrangler に指示します。たとえば、テキストに近い内容をテキストファイルとして読む場合や、コンパイル済み WASM をすぐにインスタンス化して実行できるものとして扱う場合に便利です。これらのルールは、従来の service worker 形式と新しい modules 形式の両方の Worker に適用できます。このフィールドは、レガシーのbuild.upload.rulesフィールド(modules 形式の Worker にだけ適用)を置き換えます。
以前は必須だった設定フィールドのうち、特定の状況では任意になったものがいくつかあります。推測されるか、最適化として追加できます。Wrangler v2 では、開始時に必須のフィールドはなくなりました。必要になったときに、設定を少しずつ追加できます。
-
name:stringname設定フィールドは、wrangler devおよびwrangler kv:*コマンドでは不要になりました。さらに、--name <name>としてコマンドライン引数でも渡せます。wrangler deployでは、いまも必須です。 -
account_id:stringaccount_idフィールドは、どのコマンドでも必須ではありません。関連するコマンドは、ログイン済みかを確認し、未ログインならログインを求めます。ログイン後はアカウント ID を使い、ログインセッションが切れるまで再確認しません。アカウント ID が複数ある場合は、選ぶための一覧が表示されます。Wrangler ファイル、または環境変数
CLOUDFLARE_ACCOUNT_IDでaccount_idを設定することもできます。起動が速くなり、ID が複数あるときの選択肢一覧を回避できます。対話的にログインできない場合は、環境変数CLOUDFLARE_API_TOKENも便利です。詳細は CI/CD での実行 を参照してください。 -
workers_devboolean、デフォルト: ルートがないときはtrueworkers_devフィールドは、Worker を*.workers.devサブドメインへ公開することを示します。たとえば、Worker 名がmy-workerで、以前設定した*.workers.devサブドメインがusernameの場合、Worker はmy-worker.username.workers.dev.comへ公開されます。このフィールドは必須ではなく、routeまたはroutesが未設定のときはデフォルトでtrueです。ルートがあるときはデフォルトでfalseです。*.workers.devサブドメインにもルートにも公開したくない場合は、workers_devをfalseにします。Worker をスタンドアロンのサービスとして公開し、(servicesで)別の Worker からだけアクセスできるようにするときに便利です。
いくつかの設定フィールドは非推奨ですが、いまのところ存在しても破壊的変更にはなりません。警告メッセージを読み、新しい設定へ移行してください。将来のバージョンで削除され、動作しなくなります。
-
zone_id:string、非推奨zone_idフィールドは非推奨で、将来のリリースで削除されます。いまはroute/routesから、またwrangler devを使うときは任意でdev.hostから推測されます。これにより、1 つの Worker を複数ドメインへデプロイしやすくなります。 -
build.upload:object、非推奨build.uploadフィールドは非推奨で、将来のリリースで削除されます。使うと警告が出て、警告を消すための設定ファイルの書き換え方法が示されます。build.upload.main/build.upload.dirはmainフィールドに置き換わり、service worker 形式と modules 形式の両方の Worker に適用されます。build.upload.rulesはrulesフィールドに置き換わり、service worker 形式と modules 形式の両方の Worker に適用されます。build.upload.formatは指定不要になり、wranglerが自動で推測します。
いくつかの設定フィールドは非推奨で、期待どおりには動きません。エラーメッセージを読み、新しい設定へ移行してください。
-
site.entry-point:string、非推奨site.entry-point設定は、[site]設定がある Worker のエントリーポイントを指定するために使われていました。トップレベルのmainフィールドに置き換わっています。 -
type:rust|javascript|webpack、非推奨type設定は Worker の種類を指定するために使われていました。冗長になり、いまは使い方から推測されます。type = "webpack"(および任意のwebpack_configフィールド)を使っていた場合は、webpack 移行ガイド を読み、プロジェクトを変更してカスタムビルドを使ってください。
次のコマンドは、Wrangler v2 時点で非推奨です。
wrangler build コマンドは、Worker のビルドには使えなくなりました。
同等の機能は wrangler publish --dry-run --outdir=path/to/build で実現できます。
wrangler config コマンドは、API トークンでの認証には使えなくなりました。
OAuth 認証の管理には wrangler login / wrangler logout を使うか、環境変数 CLOUDFLARE_API_TOKEN で API トークンを渡します。
wrangler preview コマンドは、Worker の一時的なプレビューインスタンスの作成には使えなくなりました。
開発中に Worker を試すには、wrangler dev を使ってください。
wrangler subdomain コマンドは、workers.dev サブドメインの作成には使えなくなりました。
workers.dev サブドメインは、Workers & Pages > 対象の Worker を選択 > Your subdomain > Change で作成します。
wrangler route コマンドは、Worker のルート設定には使えなくなりました。
ルートは Wrangler 設定ファイル で指定します。
-
Cloudflare ダッシュボードで定義したルートは、Wrangler で定義したルートと並べて追加されません。Wrangler で定義したルートは、
wrangler.tomlのrouteまたはroutesキーです。両方がある場合、有効なのはwrangler.tomlで定義したルートだけです。ルートを Cloudflare ダッシュボードだけで管理するには、Wrangler ファイルからrouteとroutesキーを削除し、workers_dev = falseを追加します。 -
Wrangler は、
wrangler devを実行したディレクトリのindex.jsを、Worker のエントリーポイントとして使わなくなります。main設定フィールドを使うか、コマンドライン引数として明示的に渡します(例:wrangler dev index.js)。 -
Wrangler は、パスとして表されていない裸の指定子を、ファイル名とはみなさなくなります。たとえば、次のようなフォルダーがあるとします。
project ├── index.js └── some-dependency.jsindex.jsの内容が次の場合です。import SomeDependency from "some-dependency.js"; addEventListener("fetch", (event) => { // ... });Wrangler v1 は
import SomeDependency from "some-dependency.js";をファイルsome-dependency.jsに解決していました。Wrangler v2 でも動きますが、非推奨の警告も出ます。将来はエラーで失敗します。代わりに、相対パスであることを示すようにインポートを書き換えてください。- import SomeDependency from "some-dependency.js"; + import SomeDependency from "./some-dependency.js";
| コマンド | v1 | v2 | 備考 |
|---|---|---|---|
publish |
✅ | ✅ | |
dev |
✅ | ✅ | |
preview |
✅ | ❌ | 削除されました。代わりに dev を使います。 |
init |
✅ | ✅ | |
generate |
✅ | ❌ | 削除されました。代わりに git clone を使います。 |
build |
✅ | ❌ | 削除されました。代わりに独自のビルドスクリプトを呼び出します。 |
secret |
✅ | ✅ | |
route |
✅ | ❌ | 削除されました。代わりに publish を使います。 |
tail |
✅ | ✅ | |
kv |
✅ | ✅ | |
r2 |
🚧 | ✅ | Wrangler v1.19.8 で導入されました。 |
pages |
❌ | ✅ | |
config |
✅ | ❓ | |
login |
✅ | ✅ | |
logout |
✅ | ✅ | |
whoami |
✅ | ✅ | |
subdomain |
✅ | ❓ | |
report |
✅ | ❌ | 削除されました。エラー報告は対話的に行います。 |
| プロパティ | v1 | v2 | 備考 |
|---|---|---|---|
type = "webpack" |
✅ | ❌ | 削除されました。移行は このガイド を参照してください。 |
type = "rust" |
✅ | ❌ | 削除されました。代わりに workers-rs ↗ を使います。 |
type = "javascript" |
✅ | 🚧 | 不要になりました。省略できます。 |
| 機能 | v1 | v2 | 備考 |
|---|---|---|---|
| TypeScript | ❌ | ✅ | Wrangler に TypeScript ファイルを渡すと、内部で esbuild ↗ を使い、自動で JavaScript にトランスパイルします。 |
| ローカルモード | ❌ | ✅ | wrangler dev --local は、Worker を Cloudflare のネットワークではなくローカルマシンで実行します。これは Miniflare ↗ で動きます。 |