439文字
2分
編集

Rspack 2.0

Rspack 2.0 が正式にリリースされた。rspack-react-10k-benchmark の測定では、本番ビルド(キャッシュなし)が 1.0 の 5.6 秒に対し 2.0 は 3.1 秒、キャッシュ利用時は 5.6 秒から 1.4 秒、HMR は 1.0 の 128ms から 2.0 は 118ms となっている。永続キャッシュを有効にし SWC 系 minimizer プラグインのキャッシュを再利用したヒット時は、ビルドがおおよそ半分になる。

  • @rspack/dev-server の既定で引き込む依存は 192 件から 1 件に減少し、@rspack/core は 8 から 1 件、@rspack/cli はゼロ依存。@rspack/dev-server の導入サイズは 15MB から 1.4MB に縮小した。
  • CommonJS require や動的 import 結果の静的解析の強化、compiler annotations(#__NO_SIDE_EFFECTS__ 等、いまは experiments.pureFunctions 前提)、Module Federation の shared における tree shaking など、出力最適化が広がった。
  • コア系 npm パッケージは pure ESM のみとなり、ESM 生成時は未知の import.meta プロパティを既定で保持する。import.defer / import.meta.main 周りのサポート拡大や、output.library.typemodern-module によるライブラリ向け ESM 出力の改善がある。
  • React Server Components 向けの実験的なローレベルサポート("use client" / "use server"、コンパイル時チェック、CSS、HMR など)が入った。
  • トップレベル target から内蔵ローダーと minimizer へ目標環境を伝播する。builtin swc-loaderdetectSyntax: 'auto'、package.json imports による #/ 解決、CSS パーサの resolveImportoptimization.moduleIdshashed、splitChunks の enforceSizeThreshold など、設定の簡素化と分割の手掛かりが増えた。

optimization.moduleIdshashed を指定し、パスから短い安定ハッシュをモジュール ID に使う例は次のとおりである。

js
export default {
  optimization: {
    moduleIds: 'hashed',
  },
};

v1 からの切り替えでは破壊的変更が含まれる。Rsbuild も 2.0 が Rspack 2.0 に合わせて出ており、エコシステム側の対応状況は各プロジェクトの案内に従う必要がある。

#参考文献