webpack —— 优化开发体验

2021-06-08  本文已影响0人  黎明的叶子

webpack 优化从两个方面入手。
一、优化开发体检。包括优化构建速度和优化使用体验
二、优化输出质量,包括减少用户能感知到的加载时间(首屏加载时间)和提升流畅度(提升代码性能)。参考链接优化输出质量

项目背景:我目前的项目,功能巨多,业务庞大。打包上面的确有很多不合理的地方以致于打包时间最长有过20分钟的情况。平均正常也得800-900秒。在另一个同事的积极推动建议下,开启了打包优化之旅。我的主要目标是优化构建速度。所以这块验证的比较多。其他的知识点算是总结了。我主要参考的是深入浅出webpack这本书。

优化构建速度

是按我自己项目中的构建优化时间从大到小排列的。

const ParallelUglifyPlugin = require('webpack-parallel-uglify-plugin');
module.exports ={
  entry: 'main.js', 
  output: {
    filename: '[name].[chunkhash].js',
    chunkFilename: '[name].[chunkhash].chunk.js'
  },

  plugins: [ 
    // 使用 ParallelUglifyPlugin 并行压缩输出的 JS 代码
    new ParallelUglifyPlugin({
      // 传递给 UglifyJS 的参数
      uglifyJS: {
        output: {
          // 最紧凑的输出
          beautify: false,
          // 删除所有的注释
          comments: false,
        },
        compress: {
          // 在UglifyJs删除没有用到的代码时不输出警告
          warnings: false,
          // 删除所有的 `console` 语句,可以兼容ie浏览器
          drop_console: true,
          // 内嵌定义了但是只用到一次的变量
          collapse_vars: true,
          // 提取出出现多次但是没有定义成变量去引用的静态值
          reduce_vars: true,
        }
      },
    }), 
  ]
 }
// 原来比较慢的配置
  {
      test: /\.(jpg|png|jpeg|gif|pdf|mp3|aac)$/,
      loaders: [
         'file-loader',
        {
           loader: 'image-webpack-loader',
           query: {
             progressive: true,
             optimizationLevel: 7,
             interlaced: false, 
             pngquant: { 
              quality: [0.65, 0.9],
              speed: 4
             }
           }
         }
       ]
  },

// 去掉某些配置后,压缩时间减少了
  {
      test: /\.(jpg|png|jpeg|gif|pdf|mp3|aac)$/,
      loaders: [
         'file-loader',
        {
           loader: 'image-webpack-loader',
           query: { 
             pngquant: { 
              quality: [0.65, 0.9], 
             }
           }
         }
       ]
  }, 
// 用插件的配置 这个也挺快的
   new ImageminPlugin({
        pngquant: {
            quality: '65-90'
        }
    }),

优化使用体验

上一篇 下一篇

猜你喜欢

热点阅读