vue

vue 项目打包分析和优化

2022-04-03  本文已影响0人  jia林

打包分析工具(webpack-bundle-analyzer)

分析 Bundle 由什么模块组成
分析什么模块占据了比较大的体积
分析是否有什么错误的模块被打包了

安装及配置

NODE_ENV = production
ANALYZE_MODE = "analyze"
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
// 环境变量的引入
const isAnalyzeMode = !!process.env.ANALYZE_MODE
module.exports = { 
   configureWebpack: config => {
     if (isAnalyzeMode) {
        config.plugins.push(
          new BundleAnalyzerPlugin({
            // 生成静态文件
            analyzerMode: 'static',
        })
      )
    }
    config.plugins.push(
      new webpack.IgnorePlugin({
        resourceRegExp: /^\.\/locale$/,
        contextRegExp: /moment$/,
      })
    )
  }
}
 "scripts": { 
        ...
        "build:analyze": "vue-cli-service build --mode analyze",
  }

根据分析图开始优化

1.检查是否有没有用的模块是否打包到了最终的文件中
2.检查是否有重复加载的模块,或者是功能大体相同的模块。

image.png

3.按需加载UI框架,使用到什么组件加载什么组件
4.使用 SplitChunksPlugin(https://webpack.docschina.org/plugins/split-chunks-plugin/)分割第三方库

// 在vue.config.js 里进行配置
  config.optimization.splitChunks = {
      maxInitialRequests: Infinity,
      minSize: 300 * 1024,
      chunks: 'all',
      cacheGroups: {
        antVendor: {
          test: /[\\/]node_modules[\\/]/,
          name (module) {
          
            const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1]
            return `npm.${packageName.replace('@', '')}`
          }
        },
      }
    }
  1. 使用import 进行路由懒加载
// route文件配置component: () => import(/* webpackChunkName: "editor" */ '../views/Editor.vue'),
 {
      path: '/editor/:id',
      name: 'editor',
      component: () => import(/* webpackChunkName: "editor" */ '../views/Editor.vue'),
      meta: { requiredLogin: true, title: '编辑我的设计' }
    },

最终成果

上一篇 下一篇

猜你喜欢

热点阅读