バンドリング
デフォルトでは、Wranglerはesbuild ↗を使用してあなたのWorkerコードをバンドルします。これは、Wranglerがpackage.jsonで定義されたnpm ↗からモジュールをインポートするためのビルトインサポートを持っていることを意味します。WranglerがCloudflareにアップロードする正確なコードを確認するには、npx wrangler deploy --dry-run --outdir distを実行してください。これにより、Wranglerのバンドリング後のWorkerコードが表示されます。
あなたのWorkerコードをバンドルすることは、複数のモジュールを一つにまとめることを意味します。時には、バンドルに直接インライン化すべきでないモジュールがあるかもしれません。例えば、WasmファイルをJavaScript Workerにバンドルするのではなく、ランタイムでインポートできる別のモジュールとしてWasmファイルをアップロードしたい場合があります。Wranglerは以下のファイルタイプをサポートしています:
.txt.html.bin.wasmおよび.wasm?module
これらのファイルタイプをカスタマイズするには、バンドリング設定を参照してください。
例えば、以下のインポートを使用すると、変数dataはexample.htmlの内容を含む文字列になります:
import data from "./example.html"; // `example.html`はあなたのローカルディレクトリ内のファイルですこれはWranglerでのWasmサポートの基礎でもあります。Wranglerで開発されたWorkerでWasmモジュールを使用するには、Workerに以下を追加します:
import wasm from "./example.wasm"; // `example.wasm`はあなたのローカルディレクトリ内のファイルですconst instance = await WebAssembly.instantiate(wasm); // fetch()ハンドラー内ではなく、グローバルスコープでWasmモジュールをインスタンス化します
export default { fetch(request) { const result = instance.exports.exported_func(); },};Wranglerはpackage.json内の条件付きexportsフィールド ↗を尊重します。これにより、開発者は実行しているJavaScriptランタイムに応じて異なる実装を持つアイソモーフィックライブラリを実装できます。バンドル時に、Wranglerはworkerdキー ↗を読み込もうとします。Wranglerリポジトリにはアイソモーフィックパッケージの例 ↗があります。
あなたのビルドツールがすでにCloudflareに直接デプロイ可能なビルドアーティファクトを生成している場合、--no-bundleコマンドラインフラグを使用してバンドリングをオプトアウトできます:npx wrangler deploy --no-bundle。バンドリングをオプトアウトすると、Wranglerはあなたのコードを処理せず、Wranglerバンドリングによって導入された一部の機能(例えば、ミニファイやポリフィルの挿入)は利用できなくなります。
wrangler devおよびwrangler deployを使用する際に、WranglerがバンドルしてCloudflareのグローバルネットワークにアップロードする内容をカスタマイズするには、カスタムビルドを使用してください。