590文字
3分
編集

webpack 5.106

webpack 5.106 は、プラグイン検証のライフサイクル統一、CSS Modules のランタイム style 注入、CommonJS の分割代入に対する静的解析によるツリーシェイク改善、WebAssembly 向けのソースフェーズ import(実験的)、および oxc-parser を使った実験的 JavaScript パース例の追加などを含んだマイナー更新である。

組み込み CSS 支援は十分成熟しており、ロードマップに沿って次のマイナーリリースで本完了する見込みである。この移行の一環として css-loaderstyle-loadermini-css-extract-plugin の廃止が予定されている。

主な変更点は次のとおりである。

  • トップレベルの validate オプションと compiler.hooks.validate を追加し、設定・プラグイン・ローダーのスキーマ検証を単一のフラグで制御できるようにした。compiler.validate(...) でプラグイン側の検証を登録する。既定値はビルドモードと experiments.futureDefaults の組み合わせにより変わり、validate: false では検証をすべてスキップする。
  • experiments.css: true のもとで CSS Modules に parser.exportType: "style" を指定すると、ランタイムが HTMLStyleElement として DOM に注入する。クラス名マッピングは保持され、__webpack_require__.nc が設定されていれば同じ nonce を付与する。
  • require および module.require の分割代入を解析し、参照された名前だけをエクスポート利用とみなすことで、未使用の CommonJS エクスポートを落としやすくした。
  • TC39 Stage 3 の Source Phase Imports に沿い、experiments.sourceImportexperiments.asyncWebAssembly を有効化すると import source wasmModule from "./module.wasm"import.source("./module.wasm")WebAssembly.Module を先に取得できる(実験的)。
  • 新規プロジェクトの足場は npx create-webpack-app が推奨となり、対話式のセットアップや loader / plugin の雛形生成に対応する。従来の webpack-cliwebpack init から分離された。
  • VirtualUrlPlugincontext を指定でき、仮想モジュール内の相対 import を意図したベースディレクトリから解決する(experiments.schemes の実験 API)。
  • リポジトリに oxc-parser を差し込む module.rules[].parser.parse の例を追加した。本番利用は推奨されず、開発やベンチ用途向けの実験扱いである。
  • webpack-cli 7.0.0(最小 Node.js 20.9.0、設定の動的 import 既定化など)、webpack-dev-middleware 8.0.0(最小 webpack 5.101.0 など)、および複数の minimizer 系プラグインの major がエコシステムとして案内され、関連ツールの最小 Node.js を 20.9.0 に揃える流れが続いている。

無効化の例は次のとおりである。

js
module.exports = {
  validate: false,
};

#参考文献