玩转vite性能优化

Vite 本身因其原生 ESM、基于 esbuild 的极速构建和开发性能而被视为性能优秀的构建工具。但在大型项目中,Vite 性能依然可以进一步优化,主要可以从 开发时性能(dev server)构建性能(build) 两大方向入手。

🔧 一、开发阶段性能优化(vite dev

1. ✅ 优化依赖预构建(预打包)

Vite 会自动通过 esbuild 对依赖进行预构建(预打包),加快冷启动速度。

  • 配置优化
ts 复制代码
optimizeDeps: {
  include: ['lodash-es', 'dayjs'], // 指定预构建依赖(避免动态导入不被识别)
  exclude: ['jspdf'],     // 排除某些大型包,避免打包过慢,该用cdn方式引入、例如video.js 、 jspdf等
}

2. ✅ 禁用不必要插件 / 中间件

  • 一些插件(如 legacy、PWA、自动生成路由)会导致开发服务器变慢
  • 推荐:仅在 build 环境中使用插件
ts 复制代码
plugins: isBuild ? [legacy(), compress(), visualizer()] : [vue()];
  1. legacy 插件:用于兼容旧版浏览器,如 IE11。
  2. compress 插件:用于压缩资源文件。
  3. visualizer 插件:用于可视化打包分析。

3. ✅ 减少热更新开销(HMR)

  • 避免巨型模块(如 store/index.ts)频繁被修改
  • 拆分为小模块,按需 import,可提升 HMR 速度
  • 使用 defineOptions() / defineStore() 替代手动注册模块

4. ✅ 提升冷启动速度

  • 开启缓存(Vite 默认缓存到 node_modules/.vite
  • 避免项目根目录下存在大量无关文件(如 .git, dist, temp, 大图像等)
  • 设置 server.watch.ignored 忽略监听无关路径:
ts 复制代码
server: {
  watch: {
    ignored: ['**/dist/**', '**/.git/**'],
  },
}

📦 二、构建阶段优化(vite build

1. ✅ 合理使用 Rollup 选项

ts 复制代码
build: {
  rollupOptions: {
    output: {
      manualChunks(id) {
        if (id.includes('node_modules')) {
          return 'vendor' // 将 node_modules 单独打包
        }
      }
    }
  }
}

2. ✅ 开启构建缓存

  • 构建缓存是 Vite 4.x 后期引入的功能(通过 plugin 或自建缓存层)
  • 可配合 turbo, nx, vite-plugin-cache 实现增量构建

3. ✅ 开启 CSS 代码分离 + 压缩

ts 复制代码
build: {
  cssCodeSplit: true,
  minify: 'esbuild', // 或 'terser',但 esbuild 更快
}

4. ✅ 压缩体积 + 可视化分析

插件推荐:

🌐 三、网络优化(适用于部署后)

✅ 配合使用:

  • HTTP/2
  • CDN 静态资源缓存
  • SSR with streaming (如 Vue SSR、React Server Component)
  • 使用 vite-ssg 进行预渲染(静态化)

🧩 插件辅助优化(推荐)

插件 用途
vite-plugin-imp 按需引入组件库(如 antd)
vite-plugin-compression Gzip/Brotli 压缩
vite-plugin-inspect 插件执行链调试工具
vite-plugin-cache 缓存构建文件,加速构建
rollup-plugin-visualizer 打包体积分析

🎯 实战推荐:性能优化 Checklist

阶段 优化项 建议
开发 缓存 node_modules/.vite ✅ 开启增量预构建
开发 HMR 变慢 ✅ 拆分模块,避免巨型文件
构建 构建慢 ✅ 使用 manualChunks, 开启缓存
构建 包大 ✅ 动态导入,gzip 压缩,Tree Shaking
构建 编译慢 ✅ 使用 esbuild 替代 babel / terser
构建 依赖大 ✅ 替换大型库,如 moment → dayjs

相关推荐
江拥羡橙1 天前
Vue和React怎么选?全面比对
前端·vue.js·react.js
千码君20161 天前
React Native:快速熟悉react 语法和企业级开发
javascript·react native·react.js·vite·hook
楼田莉子1 天前
Qt开发学习——QtCreator深度介绍/程序运行/开发规范/对象树
开发语言·前端·c++·qt·学习
暮之沧蓝1 天前
Vue总结
前端·javascript·vue.js
木易 士心1 天前
Promise深度解析:前端异步编程的核心
前端·javascript
im_AMBER1 天前
Web 开发 21
前端·学习
又是忙碌的一天1 天前
前端学习day01
前端·学习·html
Joker Zxc1 天前
【前端基础】20、CSS属性——transform、translate、transition
前端·css
excel1 天前
深入解析 Vue 3 源码:computed 的底层实现原理
前端·javascript·vue.js
大前端helloworld1 天前
前端梳理体系从常问问题去完善-框架篇(react生态)
前端