This time I will bring you ideas for solving the problem of excessively large webpack packaged files. What are the precautions to solve the problem of excessively large webpack packaged files? The following is a practical case, let’s take a look at it together.
Optimization comparison:
Before optimization: index.html introduces a main.js file with a size of more than 2M.
After optimization: index.html introduces main.js, commons.js, charts.js, and other.js. In order to achieve the purpose of dividing main.js equally. Each file is controlled within 300k. (If you are happy, 100k is no problem)
A bunch of libraries and tools used:
vue, webpack, babel, highcharts, echarts, jquery, html2canvas****** I will omit some m codes here
Problem:
After using webpack in the development environment, I found a single js file 5m.
The production environment is reduced to 2m with the help of vue-cli's webpack configuration.
Solution:
Search various solutions: require.ensure, require dependency, multiple entries, commonsChunkPlugin****Here are some solutions to save effort
There are too many solutions similar to the ones below, but they all fail to achieve the expected results
entry:{ main:'xxx.js', chunks:['c1', 'c2'], commons:['jquery', 'highcharts', 'echarts','d3', 'xxxxx.js'] } plugins:{ new commonsChunkPlugin({ name:'commons', minChunks:2 }) }
Optimal solution:
entry:{ main:'xxx.js' } plugins:{ new commonsChunkPlugin({ name:'commons', minChunks:function(module){ // 下边return参考的vue-cli配置 // any required modules inside node_modules are extracted to vendor return ( module.resource && /\.js$/.test(module.resource) && module.resource.indexOf( path.join(dirname, '../node_modules') ) === 0 ) } }) , // 以下才是关键 new commonsChunkPlugin({ name:'charts', chunks:['commons'] minChunks:function(module){ return ( module.resource && /\.js$/.test(module.resource) && module.resource.indexOf( path.join(dirname, '../node_modules') ) === 0 && ['jquery.js', 'highcharts.js','echarts'].indexOf( module.resource.substr(module.resource.lastIndexOf('/')+1).toLowerCase() ) != -1 ) } }) // 如果愿意,可以再new 一个commonsChunkPlugin }
I believe you have mastered it after reading the case in this article Method, for more exciting information, please pay attention to other related articles on the php Chinese website!
Recommended reading:
JS to black and white settings for images
Detailed explanation of how to enable and disable the vue select component
The above is the detailed content of Ways to solve the problem of extremely large webpack packaged files. For more information, please follow other related articles on the PHP Chinese website!