一文解决在webpack中设置optimization,附splitChunks配置代码和解析工具
Admin 2023-04-07 群英技术资讯 931 次浏览
主要就是根据不同的策略来分割打包出来的bundle。
本人项目中splitChunks配置如下:
module.exports = { chainWebpack(config) { config.when(process.env.NODE_ENV != 'development', config => { config.optimization.splitChunks({ chunks: 'all', cacheGroups: { // 第三方组件 libs: { 指定chunks名称 name: 'chunk-libs', //符合组的要求就给构建venders test: /[\\/]node_modules[\\/]/, //priority:优先级:数字越大优先级越高,因为默认值为0,所以自定义的一般是负数形式,决定cacheGroups中相同条件下每个组执行的优先顺序。 priority: 10, // 仅限于最初依赖的第三方 chunks: 'initial' }, elementUI: { // 将elementUI拆分为单个包 name: 'chunk-elementUI', // 重量需要大于libs和app,否则将打包到libs或app中 priority: 20, // 为了适应cnpm test: /[\\/]node_modules[\\/]_?element-ui(.*)/ }, //公共组件 commons: { name: 'chunk-commons', // can customize your rules test: resolve('src/components'), minChunks: 3, priority: 30, //这个的作用是当前的chunk如果包含了从main里面分离出来的模块,则重用这个模块,这样的问题是会影响chunk的名称。 reuseExistingChunk: true, //最大初始化加载次数,一个入口文件可以并行加载的最大文件数量,默认3 maxInitialRequests: 3, //表示在分离前的最小模块大小,默认为0,最小为30000 minSize: 0 }, echarts: { // split echarts libs name: 'chunk-echarts', test: /[\\/]node_modules[\\/]_?echarts(.*)/, priority: 40, chunks: 'async', reuseExistingChunk: true }, monaco: { // split monaco libs name: 'chunk-monaco', test: /[\\/]node_modules[\\/]_?monaco(.*)/, priority: 40, chunks: 'async', reuseExistingChunk: true }, 'project-components': { // split project libs name: 'chunk-project-components', test: resolve('src/views/project'), priority: 50, chunks: 'async', reuseExistingChunk: true }, 'teachers-components': { // split teacher libs name: 'chunk-teachers-components', test: resolve('src/views/teachers'), priority: 60, chunks: 'async', reuseExistingChunk: true }, 'utils': { // split utils libs name: 'chunk-utils', test: resolve('src/utils'), priority: 70, chunks: 'async', reuseExistingChunk: true }, } }) }) } }
分析工具:webpack-bundle-analyzer
npm i --save-dev webpack-bundle-analyzer
config.plugin('BundleAnalyzerPlugin').use(BundleAnalyzerPlugin).tap(() => [ { rel: 'BundleAnalyzerPlugin', analyzerMode: 'server', // 'server': 启动端口服务;'static': 生成 report.html;'disabled': 配合 generateStatsFile 使用; generateStatsFile: false, // 是否生成stats.json文件 analyzerHost: '127.0.0.1', analyzerPort: '8667', reportFilename: 'report.html', defaultSizes: 'parsed', openAnalyzer: false, statsFilename: 'stats.json', statsOptions: null, excludeAssets: null }
运行
npm run build 或者 npm run dev
访问
http://127.0.0.1:8877
分析现状
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了Vue 服务端渲染SSR示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
两个操作数都是字符串,比较ASCII编码(区分大小写)。一个为数字,另一个不是数字,转化为数字。NaN与任意数值比较均返回false(既不大于也不小于和等于)。
这篇文章主要介绍JavaScript继承方式,在JavaScript学习中,继承是很重要的一个知识内容。下文会给大家介绍原型式继承、原型链式继承、借用构造函数、组合继承、寄生组合式继承这几种继承方式,感需求的朋友就继续往下看吧。
node进程间如何通信?下面本篇文章带大家了解node进程的通信方式,以及在node中如何实现这些方式的通信,希望对大家有所帮助!
这篇文章主要为大家介绍了Vue的自定义事件内容分发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008