乐趣区

关于前端:vue项目中针对webpack配置进行项目优化

1. 移除 preload(预载)与 prefetch(预取

vue 脚手架默认开启了 preload 与 prefetch,当咱们我的项目很大时,这个就成了首屏加载的最大首恶了
preload 与 prefetch 都是一种资源预加载机制;
preload 是事后加载资源,但并不执行,只有须要时才执行它;
prefetch 是用意预获取一些资源,以备下一个导航 / 页面应用;
preload 的优先级高于 prefetch。

// 敞开敞开 preload 与 prefetch

  chainWebpack: config => {// 移除 preload( 预载) 插件
    config.plugins.delete('preload')
    // 移除 prefetch(预取) 插件
    config.plugins.delete('prefetch')
  }

2. 缩小打包文件的体积 productionSourceMap

productionSourceMap
在通过 vue-cli 脚手架生成的我的项目中,其值默认为 true。它的作用是用来显示或定义一些 ” 问题 ” 代码。然而对于生产环境,咱们能够进行敞开。这样可能对于打包后文件的体积有很大的缩小

vue.config.js module.exports = {productionSourceMap: false}

3.webpack 分包

在 Webapck4.x 版本之前,应用 CommonsChunkPlugin 去做拆散,webpack 4 最大的改变就是破除了 CommonsChunkPlugin 引入了 optimization.splitChunks。如果你的 mode 是 production,那么 webpack4 就会主动开启 Code Splitting。

   config.optimization.splitChunks({
        chunks: 'all',
        cacheGroups: {
          // cacheGroups 下能够能够配置多个组,每个组依据 test 设置条件,合乎 test 条件的模块
          commons: {
            name: 'chunk-commons',
            test: resolve('src/components'),
            minChunks: 3, //  被至多用三次以上打包拆散
            priority: 5, // 优先级
            reuseExistingChunk: true // 示意是否应用已有的 chunk,如果为 true 则示意如果以后的 chunk 蕴含的模块曾经被抽取进来了,那么将不会从新生成新的。},
          node_vendors: {
            name: 'chunk-libs',
            chunks: 'initial', // 只打包初始时依赖的第三方
            test: /[\\/]node_modules[\\/]/,
            priority: 10
          },
          vantUI: {
            name: 'chunk-vantUI', // 独自将 vantUI 拆包
            priority: 20, // 数字大权重到,满足多个 cacheGroups 的条件时候分到权重高的
            test: /[\\/]node_modules[\\/]_?vant(.*)/
          }
        }
      })
      config.optimization.runtimeChunk('single')
退出移动版