webpack 5.106
webpack 5.106 は、プラグイン検証のライフサイクル統一、CSS Modules のランタイム style 注入、CommonJS の分割代入に対する静的解析によるツリーシェイク改善、WebAssembly 向けのソースフェーズ import(実験的)、および oxc-parser を使った実験的 JavaScript パース例の追加などを含んだマイナー更新である。
組み込み CSS 支援は十分成熟しており、ロードマップに沿って次のマイナーリリースで本完了する見込みである。この移行の一環として css-loader、style-loader、mini-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.sourceImportとexperiments.asyncWebAssemblyを有効化するとimport source wasmModule from "./module.wasm"やimport.source("./module.wasm")でWebAssembly.Moduleを先に取得できる(実験的)。 - 新規プロジェクトの足場は
npx create-webpack-appが推奨となり、対話式のセットアップや loader / plugin の雛形生成に対応する。従来のwebpack-cli内webpack initから分離された。 VirtualUrlPluginにcontextを指定でき、仮想モジュール内の相対 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,
};