Webpack 从 2.7.x 升级到 4.5.x

乌奇特·库马尔

当我将 webpack 从 2.7.x 升级到 4.5.x 时,main.js 捆绑的大小从 2.4 Mb 增加到 12 Mb。我不知道为什么?我已将所有加载器更新到最新版本 - 例如,url-loader、css-loader、file-loader 等。
这是我的配置 webpack 2.7.X

entry: {
        home: [
            'babel-polyfill',
            path.join(__dirname, 'app/home-styles.js')
        ],
        main: [
            'babel-polyfill',
            path.join(__dirname, 'app/styles.js'),
            path.join(__dirname, 'app/vendor.js'),
            path.join(__dirname, 'app/index.js')
        ]
    },
    output: {
        path: path.join(__dirname, '/dist/'),
        filename: '[name]-[hash].min.js',
        chunkFilename: 'static/react/js/[name]-[hash]-chunk.min.js'
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: 'app/index.tpl.html',
            inject: 'body',
            filename: 'index.html'
        }),

        new ExtractTextPlugin({
            filename: '[name]-[hash].min.css',
            disable: false,
            allChunks: true
        }),

        new webpack.optimize.UglifyJsPlugin({
            compressor: {
                warnings: false,
                screw_ie8: true
            }
        }),

        new webpack.LoaderOptionsPlugin({
            minimize: true,
            options: {
                postcss: {
                    plugins: () =>[autoprefixer]
                }
            }
        }),

        new StatsPlugin('webpack.stats.json', {
            source: false,
            modules: false
        }),
new webpack.DefinePlugin({
            'process.env' : {
                    'NODE_ENV': JSON.stringify('production')
                }
        }),

        new webpack.optimize.CommonsChunkPlugin({
            names: ["common"],
            minChunks: 2,
            async: true
        })
    ],


    module: {
        rules: [
            {
                test: /\.js?$/,
                exclude: [/node_modules/],
                use: {
                    loader: 'babel-loader'
                }
            },

            {
                test: /\.css$/,
                use: ExtractTextPlugin.extract({
                    fallback: 'style-loader',
                    use: {
                        loader: 'css-loader',
                        options: {
                            minimize: true
                        }
                    }
                })
            },

            {
                test: /\.scss$/,
                use: ExtractTextPlugin.extract({
                    fallback: ['style-loader', 'sass-loader'],
                    use: {
                        loader: 'css-loader',
                        options: {
                            modules: true,
                            localIdentName: '[name]---[local]---[hash:base64:5]'
                        }
                    }

                })
            },

            {
                test: /\.woff(2)?(\?[a-z0-9#=&.]+)?$/,
                use: {
                    loader: 'file-loader',
                    options: {
                        name: 'static/fonts/[name].[ext]',
                        limit: 10000,
                        mimetype: 'application/font-woff'
                    }
                }
            },

            {
                test: /\.(ttf|eot|svg)(\?[a-z0-9#=&.]+)?$/,
                use: {
                    loader: 'file-loader',
                    options: {
                        name: 'static/fonts/[name].[ext]'
                    }
                }
            },

            {
                test: /\.otf(\?[a-z0-9#=&.]+)?$/,
                use: {
                    loader: 'file-loader',
                    options: {
                        name: 'static/fonts/[name].[ext]',
                        limit: 10000,
                        mimetype: 'application/x-opentype'
                    }
                }
            },

            {
                test: /\.(jpe?g|png|gif|svg)$/i,
                use: {
                    loader: 'file-loader',
                    options: {
                        name: 'static/images/[name].[ext]'
                    }
                }
            }
        ]
    },

    resolve: {
        modules: [
            path.join(__dirname, 'static'),
            'node_modules'
        ],
        extensions: ['*', '.json', '.js', '.jsx', '.css', '.scss']
    },

网络包 4.5.X

devtool: 'eval-source-map',
    entry: {
        home: [
            path.join(__dirname, 'app/home-styles.js')
        ],
        main: [
            'babel-polyfill',
            path.join(__dirname, 'app/styles.js'),
            path.join(__dirname, 'app/vendor.js'),
            path.join(__dirname, 'app/index.js')
        ]
    },
    output: {
        path: path.join(__dirname, '/dist/'),
        filename: '[name]-[hash].min.js',
        chunkFilename: 'static/react/js/[name]-[hash]-chunk.min.js',
        publicPath: '/'
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: 'app/index.tpl.html',
            inject: 'body',
            filename: 'index.html'
        }),
        new webpack.DefinePlugin({
            'process.env': {
                NODE_ENV: JSON.stringify('production')
            }
        }),
        new StatsPlugin('webpack.stats.json', {
            source: false,
            modules: false
        }),
        new ExtractTextPlugin({
            filename: '[name]-[hash].min.css',
            disable: false,
            allChunks: true
        }),
        new webpack.LoaderOptionsPlugin({
            minimize: true,
            options: {
                postcss: {
                    plugins: () =>[autoprefixer]
                }
            }
        })
    ],
    optimization:{
        runtimeChunk: false,
        splitChunks: {
            chunks: "async",
            minChunks: 1,
            name: true,
            cacheGroups: {
                commons: {
                    minChunks: 2
                }
            }
        },
        minimize: true
      },
      mode: 'production',
      devServer: {
        historyApiFallback: true,
        noInfo: false
      },

      module: {
        rules: [
            {
                test: /\.js?$/,
                exclude: [/node_modules/],
                use: {
                    loader: 'babel-loader'
                }
            },

            {
                test: /\.css$/,
                use: ExtractTextPlugin.extract({
                    fallback: 'style-loader',
                    use: {
                        loader: 'css-loader',
                        options: {
                            minimize: true
                        }
                    }
                })
            },

            {
                test: /\.scss$/,
                use: ExtractTextPlugin.extract({
                    fallback: ['style-loader', 'sass-loader'],
                    use: {
                        loader: 'css-loader',
                        options: {
                            modules: true,
                            localIdentName: '[name]---[local]---[hash:base64:5]'
                        }
                    }

                })
            },

            {
                test: /\.woff(2)?(\?[a-z0-9#=&.]+)?$/,
                use: {
                    loader: 'file-loader',
                    options: {
                        name: 'static/fonts/[name].[ext]',
                        limit: 10000,
                        mimetype: 'application/font-woff'
                    }
                }
            },

            {
                test: /\.(ttf|eot|svg)(\?[a-z0-9#=&.]+)?$/,
                use: {
                    loader: 'file-loader',
                    options: {
                        name: 'static/fonts/[name].[ext]'
                    }
                }
            },

            {
                test: /\.otf(\?[a-z0-9#=&.]+)?$/,
                use: {
                    loader: 'file-loader',
                    options: {
                        name: 'static/fonts/[name].[ext]',
                        limit: 10000,
                        mimetype: 'application/x-opentype'
                    }
                }
            },

            {
                test: /\.(jpe?g|png|gif|svg)$/i,
                use: {
                    loader: 'file-loader',
                    options: {
                        name: 'static/images/[name].[ext]'
                    }
                }
            }
        ]
    },

    resolve: {
        modules: [
            path.join(__dirname, 'static'),
            'node_modules'
        ],
        extensions: ['*', '.json', '.js', '.jsx', '.css', '.scss']
    }

我也将 System.import() 更改为 import() 我做错了什么?

波阿兹

您将 devtool 设置为eval-source-map甚至在生产模式下。

eval-source-map - 每个模块都使用 eval() 执行,并将 SourceMap 作为 DataUrl 添加到 eval()。最初它很慢,但它提供了快速的重建速度并产生了真实的文件。行号被正确映射,因为它被映射到原始代码。它为开发提供最优质的 SourceMaps。

它还可以使您的捆绑包更大。确保为适当的模式使用不同的源映射。这是 devtool 值的列表:devtool configuration

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

升级到Alamofire 5.x

来自分类Dev

React Navigation将4.x升级到5.x

来自分类Dev

从 Angular 2 升级到 Angular 7,无法绑定 [x],因为它不是 [y] 的属性

来自分类Dev

在Docker中将Elasticsearch集群从2.x升级到5.x时表示红色/悬空

来自分类Dev

将 angular 从 2.x 升级到 4.x 后,类型“People”上不存在属性“emit”

来自分类Dev

难以快速升级到4.x

来自分类Dev

无法升级到 Redis Server 4.x

来自分类Dev

将 Neo4j 2.3 升级到 3.4 - 无法访问 jarfile 2.x-config-migrator.jar

来自分类Dev

如果我将笔记本电脑中的2X2 GB RAM升级到2X4 GB,会发生什么情况?

来自分类Dev

Artifactory Pro从6.x升级到7.x之后的404

来自分类Dev

从Server 2008 x64升级到Windows 7 x64

来自分类Dev

Openlink Virtuoso 在 ubuntu 16.04 上将 6.x 升级到 7.x

来自分类Dev

从Webpack 2升级到Webpack 4-如何进行错误构建

来自分类Dev

从Webpack 2升级到Webpack 4-如何进行错误构建

来自分类Dev

从Express 3.x升级到Express 4.x-Mongo Session Store

来自分类Dev

将Tensorflow 1.x代码升级到Tensorflow 2.x代码

来自分类Dev

将elasticsearch2.4升级到elasticsearch7.x

来自分类Dev

升级到python 3.x

来自分类Dev

如何将jwplayer 5升级到6.x

来自分类Dev

将Concrete5从5.5.2.1升级到5.6.x的问题

来自分类Dev

在PowerMac G5上将OS X 10.3.4升级到10.5

来自分类Dev

是否可以从Solr 4.x直接升级到Solr 6.1?

来自分类Dev

升级到4.x后,ServiceStack Razor无法正确呈现页面

来自分类Dev

升级到Rails 4.x后,Ruby on Rails Web服务不起作用

来自分类Dev

将 RAM 从 20GB(1x 4GB、1x 16GB)升级到 32GB(2x 16GB)

来自分类Dev

从Mongoose 3.x升级到Mongoose 4.x时,如何在模式中使用模式?

来自分类Dev

从Mongoose 3.x升级到Mongoose 4.x时,如何在模式中使用模式?

来自分类Dev

将Jersey客户端1.x升级到2.x时UriBuilder上的AbstractMethodError

来自分类Dev

将解析服务器 2.x 升级到 3.x 与旧代码库兼容

Related 相关文章

  1. 1

    升级到Alamofire 5.x

  2. 2

    React Navigation将4.x升级到5.x

  3. 3

    从 Angular 2 升级到 Angular 7,无法绑定 [x],因为它不是 [y] 的属性

  4. 4

    在Docker中将Elasticsearch集群从2.x升级到5.x时表示红色/悬空

  5. 5

    将 angular 从 2.x 升级到 4.x 后,类型“People”上不存在属性“emit”

  6. 6

    难以快速升级到4.x

  7. 7

    无法升级到 Redis Server 4.x

  8. 8

    将 Neo4j 2.3 升级到 3.4 - 无法访问 jarfile 2.x-config-migrator.jar

  9. 9

    如果我将笔记本电脑中的2X2 GB RAM升级到2X4 GB,会发生什么情况?

  10. 10

    Artifactory Pro从6.x升级到7.x之后的404

  11. 11

    从Server 2008 x64升级到Windows 7 x64

  12. 12

    Openlink Virtuoso 在 ubuntu 16.04 上将 6.x 升级到 7.x

  13. 13

    从Webpack 2升级到Webpack 4-如何进行错误构建

  14. 14

    从Webpack 2升级到Webpack 4-如何进行错误构建

  15. 15

    从Express 3.x升级到Express 4.x-Mongo Session Store

  16. 16

    将Tensorflow 1.x代码升级到Tensorflow 2.x代码

  17. 17

    将elasticsearch2.4升级到elasticsearch7.x

  18. 18

    升级到python 3.x

  19. 19

    如何将jwplayer 5升级到6.x

  20. 20

    将Concrete5从5.5.2.1升级到5.6.x的问题

  21. 21

    在PowerMac G5上将OS X 10.3.4升级到10.5

  22. 22

    是否可以从Solr 4.x直接升级到Solr 6.1?

  23. 23

    升级到4.x后,ServiceStack Razor无法正确呈现页面

  24. 24

    升级到Rails 4.x后,Ruby on Rails Web服务不起作用

  25. 25

    将 RAM 从 20GB(1x 4GB、1x 16GB)升级到 32GB(2x 16GB)

  26. 26

    从Mongoose 3.x升级到Mongoose 4.x时,如何在模式中使用模式?

  27. 27

    从Mongoose 3.x升级到Mongoose 4.x时,如何在模式中使用模式?

  28. 28

    将Jersey客户端1.x升级到2.x时UriBuilder上的AbstractMethodError

  29. 29

    将解析服务器 2.x 升级到 3.x 与旧代码库兼容

热门标签

归档