美文网首页
Webpack 打包优化

Webpack 打包优化

作者: QLing09 | 来源:发表于2019-03-25 13:34 被阅读0次

现在全新的项目比较少了,大部分是在原有项目上面新增需求。收到一个小需求,本身需求不难。这项目是把后端操作系统和H5手机端展示页做在一起的,打包入口文件只有一个,最后打包的时发现打包后的包体积比我想象中大太多了,H5部分还是需要在手机端展示。就有了后续……

Analyze 分析

vue-cli自带分析,直接script开启: "analyze": "npm_config_report=true npm run build"

分析文件
分析文件
static/js/vendor.0b9fa55c7048684aba81.js (1.18 MB)
static/js/app.c3251a9bef8c1924ea86.js (853.75 KB)

router 按需加载

原来这样的写法:import Home from '@/pages/home'
改成:const Home = () => import('@/pages/home')
1553067494614.jpg

添加SplitChunksPlugin

webpack 3 to webpack 4

餐卡:To v4 from v3
参考:html-webpack-plugin
参考:vue-loader升级15
参考: webpack3.x升级webpack4

  • 更新 webpack 到 4.28.3 版本
  • 更新 webpack-dev-server 到 3.1.14版本
  • 更新 vue-loader 到 15.7.0版本
  • 更新 html-webpack-plugin 到 3.2.0 版本
  • 添加 webpack-cli 版本 3.2.1
  • 添加 mini-css-extract-plugin 版本 0.5.0

webpack.dev.conf 修改

const VueLoaderPlugin = require('vue-loader/lib/plugin')
...
  // 开发环境引入
  mode: 'development',
  ...
  module: {
    ...
  }
  plugins: {
    ...
    new VueLoaderPlugin()
    ...
  }
  devServer: {
    ...
  }

接着, 以下插件被废弃掉了

  • webpack.DefinePlugin
  • webpack.NamedModulesPlugin
  • webpack.NoEmitOnErrorsPlugin

utils.js 修改

现在 Vue Loader v15 使用了一个不一样的策略来推导语言块使用的 loader,需要更换成mini-css-extract-plugin

...
// 注释掉原来的插件
// const ExtractTextPlugin = require("extract-text-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin")
...
// 找到:
// return ExtractTextPlugin.extract({
//   use: loaders,
//   fallback: "vue-style-loader",
//   publicPath: '../../'
// });
// 改为:
return [MiniCssExtractPlugin.loader].concat(loaders)

webpack.prod.conf.js 修改

vue-loader 升级了对应也要升级
extract-text-webpack-plugin 更换成 uglifyjs-webpack-plugin
要在配置表里添加optimization选项

const VueLoaderPlugin = require('vue-loader/lib/plugin')
...
output: { ...},
// 这里添加
optimization: {
    runtimeChunk: {
      name: 'manifest'
    },
    minimizer: [
      new UglifyJsPlugin({
        cache: true,
        parallel: true,
        sourceMap: config.build.productionSourceMap,
        uglifyOptions: {
          warnings: false
        }
      }),
      new OptimizeCSSPlugin({
      cssProcessorOptions: config.build.productionSourceMap
        ? { safe: true, map: { inline: false } }
        : { safe: true }
    }),
    ],
    splitChunks:{
      chunks: 'async',
      minSize: 30000,
      minChunks: 1,
      maxAsyncRequests: 5,
      maxInitialRequests: 3,
      name: false,
      cacheGroups: {
        vendor: {
          name: 'vendor',
          chunks: 'initial',
          priority: -10,
          reuseExistingChunk: false,
          test: /node_modules\/(.*)\.js/
        },
        styles: {
          name: 'styles',
          test: /\.(scss|css)$/,
          chunks: 'all',
          minChunks: 1,
          reuseExistingChunk: true,
          enforce: true
        }
      }
    }
  },
  // 这里添加
  plugins: [
  ...
    new VueLoaderPlugin(),
    new MiniCssExtractPlugin({
      filename: utils.assetsPath('css/[name].[contenthash].css')
    }),
  ...
]  

升级后

由于后台操作系统和H5是写在一项目里面,所以需要多做一步。

多个入口\出口

  • 拆成多入口打包
  • 看到ueditor这个插件时,这个富文本是非常大的,打包H5可以排除掉
  • 框架用了两个:element-ui(PC端)、mint-ui(手机端),分入口打包

相关文章

  • 基于webpack 3 打包性能优化

    基于webpack 3 打包性能优化 source Scope Hoisting. 过去 webpack 打包时的...

  • webpack打包优化

    实现webpack打包优化,有两个优化点: 如何减少打包时间 如何减少打包大小 减少打包时间 优化Loader对于...

  • React单页面应用项目 性能优化 实践

    react 单页面应用项目在加载优化这一块就得依赖webpack的打包方式。webpack的打包优化的本质就是将 ...

  • 浅谈webpack打包原理

    近来想要对旧项目进行优化,所以了解下webpack打包原理为优化做准备 webpack 4.x 打包文件 inde...

  • Webpack极限打包优化

    今天为了更好地了解一下Webpack打包优化的一些内容,看了一下NEXT公开课,Webpack打包极限优化,感兴趣...

  • Webpack 打包优化之速度篇

    在前文 Webpack 打包优化之体积篇中,对如何减小 Webpack 打包体积,做了些探讨;当然,那些法子对于打...

  • 前端打包部署优化之gzip

    使用webpack打包出来的文件过大,导致访问速度极其慢,搜索webpack打包优化,能够看到很多前辈的建议:gz...

  • webpack 性能优化

    webpack性能优化 开发环境性能优化 生产环境性能优化 开发环境性能优化 优化打包构建速度 优化调试功能 生产...

  • vue项目优化

    vue 项目优化 项目打包体积优化 通常vue项目通过webpack打包后,会出现vendor包的体积过大的情况,...

  • 2019-12-16 总结几个webpack打包优化的方法

    总结几个webpack打包优化的方法 为什么要优化打包? 项目越做越大,依赖包越来越多,打包文件太大 单页面应用首...

网友评论

      本文标题:Webpack 打包优化

      本文链接:https://www.haomeiwen.com/subject/ixmamqtx.html