【问题标题】:Reduce webpack bundle size in react.js减少 react.js 中的 webpack 包大小
【发布时间】:2023-04-08 09:02:01
【问题描述】:

我正在为一个 react 应用程序设置我的 webpack 配置。但我无法减小 bundle.js 的大小。在开发模式下,大小约为 4MB,在生产模式下,大小约为 1.5MB。这是我的配置:-

const path = require('path');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin')

var config = {
  entry: './src/index.js',
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        use: ['babel-loader']
      },
      {
        test: [/.css$/],                
        use:[                    
         'style-loader',                  
         'css-loader'
        ] 
      },
      {
        test: /\.(png|jpg|gif|jpeg|svg)$/,
        use: [
          {
            loader: 'file-loader',
            options: {
              name: '[name].[ext]',
              outputPath: 'assets/images'
            }
          }
        ]
      }
    ]
  },
  devtool: 'source-map',
  resolve: {
    extensions: ['*', '.js', '.jsx']
  },
  output: {
    path: path.resolve(__dirname, 'dist'),
    publicPath: '/',
    filename: 'bundle.js'
  },
  devtool: 'source-map',
  plugins: [
    new webpack.HotModuleReplacementPlugin(),
    new HtmlWebpackPlugin({
      template: 'index.html'
    })
  ],
  devServer: {
    contentBase: './dist',
    hot: true,
    port: 3000,
    historyApiFallback: true
  }
}
module.exports = (env, argv) => {
  if (argv.mode === 'development') {
    config.plugins = config.plugins.concat([
        new BundleAnalyzerPlugin(),
      ])
  }
  if (argv.mode === 'production') {
    config.plugins = config.plugins.concat([
        new CleanWebpackPlugin(),
      ])
  }
  return config;
}

请帮助我减小 bundle.js 的大小。在此先感谢:)

参考:Bundle size in dev mode

参考:Bundle size in prod mode

运行开发的脚本 webpack-dev-server --config ./webpack.config.js --mode development --open --hot

运行 prod 的脚本 webpack --config ./webpack.config.js --mode production --open --hot

【问题讨论】:

    标签: javascript reactjs webpack bundle webpack-dev-server


    【解决方案1】:

    尝试添加

            new DefinePlugin({
                'process.env.NODE_ENV': JSON.stringify("production"),
            }),
    

    plugins 下。如果你设置它,React 会专门消除大量调试代码。其他库可能会也可能不会寻找它。


    这可能包含在新的mode 选项中,the docs 自从我上次查看以来发生了一些变化。

    【讨论】:

    • 添加后,prod 大小为 1.01MB,dev 大小为 3.11MB。看不出有多大区别!
    • 1.5MB 和 1.01MB 差别很大。
    【解决方案2】:

    开发包大小为 3.11MB,看起来还不错。
    要进一步减少生产中的捆绑包大小:

    • 执行压缩包
    • 移除源地图
    • 使用 gzip 和 Brotli 压缩包,然后让客户端选择压缩方式

    【讨论】:

    • 还是没有进展! :(
    • @Abhi_7 将mode 设置为“生产”。您应该能够使用 Brotli 将其降低到 ~61 KB。这就是我的小应用程序有多大,其中还包括一堆其他库和应用程序代码。通读webpack.js.org/configuration/optimization
    猜你喜欢
    • 2020-09-24
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多