Vite 前端构建优化:让打包快起来、体积瘦下来

举报
茉莉风铃 发表于 2026/09/28 15:59:04 2026/09/28
【摘要】 Vite 靠浏览器原生 ESM 做开发服务器,构建则走 Rollup。聊聊怎么配依赖预构建、手动分包、开 gzip/brotli,以及用 rollup-plugin-visualizer 揪出体积大头。

一、先搞清楚构建走的是哪里

Vite 开发时偷懒用了浏览器原生 ESM,所以秒开;但 vite build 真正打包是交给 Rollup 的。也就是说,优化构建本质上是优化 Rollup 配置,外加 Vite 在它外面套的几层。

二、依赖预构建,别让第三方库拖死首屏

node_modules 里很多包还是 CommonJS,或者内部一堆小文件。Vite 默认会对它们做预构建(转 ESM + 合并),但有些大库得手动声明:

// vite.config.js
export default {
  build: {
    rollupOptions: {
      output: {
        manualChunks: {
          vue: ['vue', 'vue-router', 'pinia'],
          echarts: ['echarts'],
        },
      },
    },
  },
};

把不常变的库(框架、图表)单独切出去,用户二次访问就能走缓存,不用每次重新下载业务代码。

三、压缩:gzip 还是 brotli

服务器开启了压缩,构建侧也可以先压好。Vite 自带 build.minify(用 esbuild,很快),再上 vite-plugin-compression:

import compress from 'vite-plugin-compression';

export default {
  plugins: [compress({ algorithm: 'brotliCompress' })],
};

brotli 一般比 gzip 再小 15%~20%,前提是你的 CDN/Nginx 支持。不支持就老老实实 gzip。

四、用可视化插件看体积大头

凭感觉优化容易白忙活。上 rollup-plugin-visualizer 生成一张treemap,哪个依赖占了多少一眼看清:

import { visualizer } from 'rollup-plugin-visualizer';

export default { plugins: [visualizer({ open: true, gzipSize: true })] };

五、几个值的对比

我一个中型后台项目调前后的变化:

项目 优化前 优化后 说明
总产物 3.8 MB 1.6 MB 分包 + brotli
首屏 JS 1.2 MB 480 KB vue/echarts 切出去
build 耗时 28 s 19 s esbuild 压缩快

六、别过度优化

不是所有项目都值得折腾分包。小项目一把梭反而简单。等首屏真的慢了、用户真的 complain 了,再上工具看数据调整。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。