11import { RsdoctorRspackPlugin } from '@rsdoctor/rspack-plugin' ;
2- import { rspack , type WebpackPluginInstance } from '@rspack/core' ;
2+ import {
3+ rspack ,
4+ type RspackOptionsNormalized ,
5+ type WebpackPluginInstance ,
6+ } from '@rspack/core' ;
37import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer' ;
48
59import { configs } from '../../configs/app-configs' ;
610import { webpackClientConfig } from '../../configs/webpack.client.prod' ;
711import { makeTmpDir } from '../util/make-tmp-dir' ;
812
13+ type BundleAnalyzerStatsOptions = {
14+ assets : boolean ;
15+ chunks : boolean ;
16+ chunkGroups : boolean ;
17+ chunkModules : boolean ;
18+ entryPoints : boolean ;
19+ entrypoints : boolean ;
20+ modules : boolean ;
21+ } ;
22+
23+ // В rspack по умолчанию больше не включаются эти поля, но для webpack-bundle-analyzer они нужны
24+ // https://rspack.rs/guide/migration/rspack_1.x#changed-default-parameters-of-statstojson
25+ const bundleAnalyzerStatsOptions : BundleAnalyzerStatsOptions = {
26+ assets : true ,
27+ chunks : true ,
28+ chunkGroups : true ,
29+ chunkModules : true ,
30+ entryPoints : true ,
31+ entrypoints : true ,
32+ modules : true ,
33+ } ;
34+
935( async ( ) => {
1036 console . log ( 'Starting bundle analysis...' ) ;
1137
@@ -16,19 +42,25 @@ import { makeTmpDir } from '../util/make-tmp-dir';
1642 /* eslint-disable no-param-reassign */
1743 const promises = clientWebpackConfigs . map ( async ( webpackConfig , i ) => {
1844 const tmpDir = await makeTmpDir ( i . toString ( ) ) ;
45+ const webpackStatsOptions : RspackOptionsNormalized [ 'stats' ] = {
46+ ...( typeof webpackConfig . stats === 'object' ? webpackConfig . stats : { } ) ,
47+ ...bundleAnalyzerStatsOptions ,
48+ } ;
1949
2050 webpackConfig . plugins = [
2151 ...( webpackConfig . plugins || [ ] ) ,
2252 new BundleAnalyzerPlugin ( {
2353 generateStatsFile : true ,
2454 statsFilename : configs . statsOutputPath ,
55+ statsOptions : bundleAnalyzerStatsOptions ,
2556 analyzerPort : 'auto' ,
2657 analyzerMode : 'server' ,
2758 openAnalyzer : true ,
2859 logLevel : 'info' ,
2960 } ) as unknown as WebpackPluginInstance , // webpack-bundle-analyzer has incorrect types
3061 new RsdoctorRspackPlugin ( { } ) ,
3162 ] ;
63+ webpackConfig . stats = webpackStatsOptions ;
3264 webpackConfig . output = {
3365 ...webpackConfig . output ,
3466 path : tmpDir ,
0 commit comments