Cloudflare Workers のモジュールレジストリを Node.js 互換性向上のために再構築
How we rebuilt Cloudflare Workers’ module registry for Node.js compatibility
Cloudflare は、Workers ランタイムの中核コンポーネントである workerd のモジュールレジストリを、高速化、標準準拠、および Node.js モジュールレジストリとの互換性向上を目的に再構築しました。これにより、Node.js の安定 API のサポートが拡充され、最大 64 MiB の圧縮バンドルサイズ制限が撤廃されました。新しいモジュールレジストリは、URL を specifier の形式として扱い、import.meta.url、import.meta.main、import.meta.resolve() のサポート、クエリ文字列やフラグメントを含む specifier の URL としての解決、node: built-ins のモジュールインスタンスの統一、import 属性の検証、ES モジュールに対する require() の Node.js ルール準拠、エラーの一貫性、モジュールの遅延コンパイル、WebAssembly モジュールのソースフェーズインポートなどを可能にします。この変更は、bundler がランタイムのモジュール解決機能により依存できるようになり、より少ない変換で済むようになります。利用するには、`new_module_registry` 互換性フラグを有効にする必要があります。
- Cloudflare が Workers ランタイム workerd のモジュールレジストリを再構築し、高速化・標準準拠・Node.js 互換性向上を図った
- 最大 64 MiB の圧縮バンドルサイズ制限を撤廃し、大規模バンドルのデプロイが可能になった
- import.meta.url / import.meta.main / import.meta.resolve() のサポートや require() の Node.js ルール準拠など、URL を specifier として扱う標準準拠の解決を実装
- bundler がランタイムのモジュール解決に依存できるようになり、変換処理を減らせるためエッジ移行が容易になる
- 新機能の利用には new_module_registry 互換性フラグの有効化が必要
Cloudflare が Workers ランタイム workerd のモジュールレジストリを全面再構築し、Node.js 互換性と標準準拠を大幅に引き上げた点は、エッジコンピューティング基盤のロックイン耐性と移植性を高める施策として注目する。64 MiB のバンドルサイズ上限撤廃や bundler 依存の削減は、大規模アプリのエッジ移行コストを下げ、Workers 上のワークロード拡大=同社エッジ事業の収益機会拡大につながりうる。一方で互換性フラグによるオプトイン導入であり、普及速度と他社エッジ基盤(Deno、Vercel 等)との競争優位の持続性を今後確認したい。