webpackのcss-loaderのバージョンを5.xから6.xに変えました。
それに伴いcss内の画像指定が期待した通り変換されなくなったのでwebpackの設定ファイルを変えることで対応しました。
具体的にはwebpackの設定のrulesにasset/resourceを追加する作業です。
この設定によりcss-loaderがcssファイル内で参照している画像を置き換えてくれます。
module.exports = [ { module: { rules: [ { test: /\.scss$/, use: [ { loader: MiniCssExtractPlugin.loader }, { loader: "css-loader", options: { url: true, importLoaders: 2, } }, "sass-loader" ] }, { test: /\.(jpg|jpeg|png|svg|gif|ico)$/, type: "asset/resource", } ], }, plugins: [ new MiniCssExtractPlugin({}), ], resolve: { extensions: ['.js', '.jsx', '.ts', '.tsx'], }, stats: 'errors-only', } ];
asset/resourceをasset/inlineにすると、画像のパスをData URIに置き換えてCSSに画像データを埋め込んでくれます。
ファイルのサイズが小さい場合はこちらでも良いかもしれません。