vue2 打包生成的js文件过大优化

在Vue项目中,打包生成的JS文件过大通常是由于多种因素造成的,包括但不限于第三方库过大、冗余代码、未压缩的资源等。下面是一些优化Vue项目打包后JS文件大小的常见方法:

1.代码分割 chunk

使用Webpack的代码分割功能,可以将代码分割成多个小的chunk,实现按需加载。

2.启用 Gzip/Brotli 压缩

打包时生成 Gzip 文件(需安装 compression-webpack-plugin)

复制代码
npm install compression-webpack-plugin --save-dev

npm install path --save-dev

在vue.config.js中配置

复制代码
const path = require('path')  // 引入path模块
const CompressionWebpackPlugin = require('compression-webpack-plugin');

module.exports = {
 // 关闭生产环境sourceMap(减少50%+体积)
  productionSourceMap: false,

  configureWebpack: { // 配置webpack的字段。
    //打包忽略第三方库
    externals:envBoole ? cdn.externals : {},
    //  开启代码分割
    optimization: {
      splitChunks: {
        chunks: 'all',
        minSize: 20000, // 最小chunk size 20KB
        maxSize: 244000, // 超过244KB自动拆分
        cacheGroups: {
          vendor: {
              test: /[\/]node_modules[\/]/,
              name(module) {
                  // 提取node_modules中的包名作为chunk名
                  const packageName = module.context.match(/[\/]node_modules[\/](.*?)([\/]|$)/)[1];
                  // 兼容npm包名中的@符号
                  return `npm.${packageName.replace('@', '')}`;
              },
              priority: 10,
              reuseExistingChunk: true,
          },
          // 拆分公共组件
          common: {
              name: 'common',
              minChunks: 2,
              priority: 5,
              reuseExistingChunk: true
          }
        }
      }
    },
    //  开启gzip压缩
    plugins: [
      new CompressionWebpackPlugin({
        filename: '[path].gz[query]',
        algorithm: 'gzip',
        test: new RegExp('\\.(' + ['js', 'css'].join('|') + ')$'),
        threshold: 10240,
        minRatio: 0.8
      })
    ]
  },

}
相关推荐
鬼手点金7 小时前
nanoGPT/nanochat 能做出 DeepSeek/Qwen 这样的大模型吗?
服务器·前端·javascript·bug·openclaw
蛋蛋的就会顺顺的7 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
程序员Sunday7 小时前
TypeScript 的 any、unknown、never 有什么区别?
前端·面试·typescript
朱涛的自习室8 小时前
70 美金的 Beyond Compare,我让 Gemini 4 和 DeepSeek 造个开源免费版(Day 2)
android·前端·人工智能
码艺-Alimjan8 小时前
Tauri 源码备份 · 打包 & 解压 总结,源码收集之路
前端·javascript·vue.js
小马不起床8 小时前
零基础玩转 FastAPI_11:前端后台管理页面
前端·状态模式·fastapi
子非鱼a10 小时前
【文件上传】一个普普通通的edu16
前端
美狐美颜SDK开放平台10 小时前
直播APP如何实现美白滤镜功能?视频美颜SDK技术开发方案详解
前端·数据库·人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk
pride.li11 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
屏什么录11 小时前
电脑如何录屏幕视频和声音?从工具到代码,7 种方案帮你彻底搞定
前端·音视频开发