优化Vue CLI项目的Webpack 2打包配置

在Vue CLI项目中,使用Webpack 2进行打包优化可以显著提高应用性能并缩短构建时间。以下是一些优化建议:

  1. 缩小文件搜索范围:Webpack的resolve.modules配置指定了模块库(如node_modules)的位置。默认情况下,Webpack会从当前目录向上递归查找node_modules。为了提高效率,可以直接指定node_modules的完整路径。例如:
module.exports = {
  resolve: {
    modules: [ resolve('src'), resolve('node_modules') ],
    alias: {
      'vue$': 'vue/dist/vue.common.js',
      'src': resolve('src'),
      'assets': resolve('src/assets'),
      'components': resolve('src/components'),
      'store': resolve('src/store')
    }
  },
  // ...
};
  1. 合理配置testincludeexclude:这些选项控制哪些文件需要处理。test是文件匹配的正则表达式,include是需要处理的文件或目录,exclude是需要排除的文件或目录。正确设置这些选项可提高构建速度。

  2. 使用并行代码压缩工具:替换默认的单线程UglifyJS插件为webpack-parallel-uglify-plugin,支持并行压缩,提升构建速度。配置示例如下:

const ParallelUglifyPlugin = require('webpack-parallel-uglify-plugin');
plugins: [
  // ...
  new ParallelUglifyPlugin({
    cacheDir: '.cache/',
    uglifyJS: {
      output: { comments: false },
      compress: { warnings: false }
    }
  })
]
  1. 复制静态文件:使用copy-webpack-plugin将静态资源复制到目标目录。例如:
var CopyWebpackPlugin = require('copy-webpack-plugin');
plugins: [
  // ...
  new CopyWebpackPlugin([
    { from: path.resolve(__dirname, '../static'), to: config.build.assetsSubDirectory, ignore: ['.*'] }
  ])
]
  1. 利用DLLPlugin和DllReferencePlugin:这两个插件预打包常见的第三方库,避免在主应用构建时重复处理这些库,加快构建速度。DLL包括一个manifest文件记录库的依赖关系,方便主应用引用。

  2. 其他优化策略

  3. 使用HappyPackthread-loader并行处理CSS、JavaScript和图片等资源。
  4. 利用CommonsChunkPlugin提取共用模块,减少首屏加载时间。
  5. 设置externals避免打包通过CDN引入的库。
  6. 使用mini-css-extract-plugin分离CSS,实现异步加载。
  7. 开启Tree Shaking,使用sideEffects属性或no-unused-modules避免引入未使用的代码。

这些策略可以根据项目需求调整,以实现最佳性能和构建效率。

pdf 文件大小:74.07KB