Why is my webpack bundle.js and vendor.bundle.js so incredibly big?

后端 未结 5 2391
我在风中等你
我在风中等你 2020-12-03 11:29

All my React projects tend to be incredibly large in file size (bundle.js is 4.87 mb and the vendor.bundle.js is 2,87 mb). I have no idea why it is this large. I already hav

5条回答
  •  醉梦人生
    2020-12-03 11:47

    EDIT

    I'm not sure if you are on Mac/IOs or Windows, but 2 things I noticed:

    1: "deploy": "NODE_ENV=production webpack -p" does not seens correct, you must set the variable when you 're building it for develop and for deploy and here you are not setting it.

    2: You have to previously set it on the terminal/comand prompt.

    Here goes a example for webpack minify and deploy, you have to adapt a little bit but I hp this should help you.

    You have to set first this enviroment variable for node on comand prompt, open it in windows or terminal in mac and:

    Mac: export NODE_ENV=production
    
    Windows: set NODE_ENV=production
    

    You can echo in windows or list in mac to check if variable has been added.

    Then in your webpack.config.js

        var PROD = process.env.NODE_ENV == 'production';
        var config = {
          entry: {
                app: [
              './src/entry.jsx'
            ],
            vendor: [
              'react',
              'lodash',
              'superagent'
            ],
             output: {
               path: './build',
               filename: PROD ? "bundle.min.js" : "bundle.js"
             },
             plugins: PROD ? [
                  new webpack.optimize.UglifyJsPlugin({minimize: true}),
                  new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.min.js'),
              ]:[
                new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js'),
              ]
    };
    

    In your package.json you can set this scripts:

    If you are on Windows:

    "scripts": {
             "dev": "set NODE_ENV=development&&webpack-dev-server --host 0.0.0.0 --hot --progress --colors --content-base build",
            "deploy": "set NODE_ENV=production&&webpack -p"
        }
    

    If you are on Mac IOS: If export does not work here use set instead, the difference from windows and mac is the space after &&.

    "scripts": {
             "dev": "export NODE_ENV=development&& webpack-dev-server --host 0.0.0.0 --hot --progress --colors --content-base build",
            "deploy": "export NODE_ENV=production&& webpack -p"
        }
    

    The use the comand npm run watch to build in development and npm run deploy to build it for production in a minified version.

提交回复
热议问题