2024年1月9日
詳細はこちらのブログをご覧ください。
optimization.chunkIds
は、webpackのデフォルトの動作に合わせて、本番モードでは"deterministic"
になりました。
Rspackでrspack.HotModuleReplacementPlugin
をサポートしました。 @rspack/dev-server
を使用せずにカスタム開発サーバーを使用している場合は、devServer.hot
をtrue
に設定する代わりに、HotModuleReplacementPlugin
を適用してHMRを有効にする必要があります。これはwebpackと同じです。 これにより、HotModuleReplacementPlugin
を内部的に使用するプラグインとの互換性が向上します。
デフォルトの変換は組み込み機能であり、内部的にソースファイル(TypeScriptなど)を互換性のあるソース(JavaScriptなど)に変換します。変換をよりカスタマイズできるように、この機能をbuiltin:swc-loader
を使用してユーザーに提供し、いくつかのrule.typeのサポートを廃止しました。以下のrule.type
が廃止されました。
"typescript"
または "ts"
"tsx"
"jsx"
以前の動作を実現するには、rule.type
を削除するか、"javascript/auto"
に変更し、カスタムローダー設定を適用してください。
.jsx
ファイルを変換するには
.tsx
ファイルを変換するには
.ts
ファイルを変換するには
Rspackはtarget をwebpackに合わせました。任意のユーザーコードを変換する代わりに、Rspackはローダーがユーザーランドコードの変換を制御できるようにしました。ターゲット環境に必要なユーザーランドコードを変換するには、builtin:swc-loader
にenv
を追加します。
resolve.extensions
は、解決中に特定のファイル拡張子を省略するのに役立ちます。以前のバージョンでは、.ts
、.tsx
、.jsx
がサポートされていましたが、webpackの動作に合わせて、これらの拡張子は最新バージョンでは削除されました。
同じ動作を得るには、resolve.extensions
を次のように変更します。
デフォルトの変換を削除する前は、target
によってコードを es5 にダウングレードし、builtin.react.refresh
によって react リフレッシュヘルパーコードを react コンポーネントに挿入することができました。そのため、すぐに使えるエクスペリエンスを提供するために、@swc/helpers
と react-refresh
を @rspack/core
の依存関係としてインストールしました。しかし、現在はデフォルトの変換を削除し、すぐに使えるエクスペリエンスには Rsbuild を使用することを推奨しているため、@swc/helpers
と react-refresh
は @rspack/core
によってインストールされる必要がなくなり、@rspack/core
の peerDependencies に変更しました。
builtin:swc-loader
または swc-loader
で externalHelpers: true
を使用している場合は、プロジェクトの依存関係として @swc/helpers
をインストールする必要があります。 @rspack/plugin-react-refresh
を使用している場合は、プロジェクトの devDependencies として react-refresh
をインストールする必要があります。
builtins オプションの一部は v0.4.0 以降非推奨となっています。
まだ builtins.noEmitAssets
、builtins.devFriendlySplitChunks
、builtins.react
、builtins.html
、builtins.copy
、builtins.minifyOptions
を使用している場合は、組み込みオプションを組み込みプラグインに移行するを参照して移行してください。
また、まだ builtins.presetEnv
、builtins.decorator
、builtins.pluginImport
、builtins.emotion
、builtins.relay
を使用している場合は、こちらの移行ガイドを参照してください。
builtin:sass-loader
は v0.4.0 以降非推奨となっています。v0.5.0 で削除されました。まだ使用している場合は、sass-loader
に移行してください。
experiments.incrementalRebuild
オプションは v0.4.0 以降非推奨となっています。v0.5.0 で削除されました。
experiments.newSplitChunks
と builtins.devFriendlySplitChunks
は v0.4.0 以降非推奨となっています。v0.5.0 で削除されました。
experiments.rspackFuture.newResolver
は v0.4.0 以降非推奨となっています。v0.5.0 で削除されました。
遅延エントリ適用は rspackFuture によって非推奨になります: experiments.rspackFuture.disableApplyEntryLazily。これは v0.4.5 で導入され、v0.5.0 でデフォルトで有効になり、v0.6.0 で削除されます。
experiments.rspackFuture.disableApplyEntryLazily
が false
の場合、options.entry
は rspack(options)
が呼び出された後でも有効な変更を加えることができますが、true
の場合はできなくなり、webpack5 と同じ動作になります。
この設定は、Rspack でアプリケーションを開発しているユーザーにはほとんどの場合影響ありませんが、Rspack プラグインまたは上位フレームワークの開発者には注意が必要です。
v0.5.0 では、多くの非推奨機能が削除されました。それ以外に、v0.5.0 では 4 つの破壊的変更が導入されましたが、Rspack を使用してアプリケーションを開発している場合は、そのうちの 2 つにのみ注意する必要があります。そのため、非推奨の警告なしで v0.4+ に既に移行している場合は、v0.5.0 への移行は簡単です。まだ移行していない場合は、v0.4.0 移行ガイドを参照してください。
これは、最も影響を受ける可能性のある破壊的変更です。
@rspack/core
を v0.5.0 にアップグレードした後、'./src/foo.tsx' を解決できません
、または './src/foo.ts' を解決できません
、または './src/foo.jsx' を解決できません
というエラーでビルドに失敗した場合は、設定に resolve.extensions = ['...', '.tsx', '.ts', '.jsx']
を追加する必要があります。
必要な拡張子のみを resolve.extensions
に追加する必要があります。たとえば、.tsx
または .ts
ファイルを使用せず、.js
または .jsx
ファイルのみを使用している場合は、'.jsx'
のみを resolve.extensions に追加する必要があります。 '.js'
はデフォルトの拡張子の 1 つであり、すべてのデフォルトの拡張子 (['.js', '.json', '.wasm']
) は '...'
で表されます。
これは、最も影響を受ける可能性のある破壊的変更です。
@rspack/core
を v0.5.0 にアップグレードした後、@swc/helpers/some-helper を解決できませんでした
または react-refresh/some-module を解決できませんでした
というエラーでビルドに失敗した場合は、プロジェクトに @swc/helpers
または react-refresh
をインストールする必要があります。
builtin:swc-loader
または swc-loader
で externalHelpers: true
を使用している場合は、プロジェクトの依存関係として @swc/helpers
をインストールする必要があります。
@rspack/plugin-react-refresh
を使用している場合は、プロジェクトの devDependencies として react-refresh
をインストールする必要があります。
@rspack/cli
、rsbuild、またはその他の Rspack の上位レベルのフレームワークを使用してアプリケーションを開発している場合は、これについて心配する必要はありません。これは、上位レベルのフレームワークまたは CLI によって適切に処理されるはずです。ただし、カスタム開発サーバー(@rspack/dev-server
または webpack-dev-server
ではない)で @rspack/core
を使用している場合、またはカスタム開発サーバーを開発している場合は、これに注意する必要があります。
Rspack で HMR を有効にするには、以前は devServer.hot
を true
に設定していましたが、現在はカスタム開発サーバーで HotModuleReplacementPlugin
を自分で適用する必要があります。
@rspack/cli
、rsbuild、またはその他の Rspack の上位レベルのフレームワークを使用してアプリケーションを開発している場合は、これについて心配する必要はありません。これは、上位レベルのフレームワークまたは CLI によって適切に処理されるはずです。ただし、プラグインまたは上位レベルのフレームワークを開発している場合は、これに注意する必要があります。
以前は Rspack で追加のエントリを付加するには compiler.options.entry
に付加していましたが、現在は EntryPlugin
を自分で適用する必要があります。