vite项目构建优化chunkSizeWarningLimit

本文介绍了如何通过调整Vite配置来解决chunk大小超过500KB的警告,包括上调chunkSizeWarningLimit限制和使用手动代码分割。通过示例展示了修改vite.config.js后的效果,将node_modules下的模块拆分为多个chunk,从而加速页面加载。虽然代码分块能提高加载速度,但过多的chunk也会增加连接数,因此需要适度控制分块数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vite项目构建优化chunkSizeWarningLimit

构建项目时,经常会遇到下面这样的分块儿建议提示,主要的意思单个模块文件超过了默认块儿限制,建议进行代码分块儿后进行动态导入可以加速页面加载速度。

$ pnpm run build

> demo@0.0.0 build /apps/code/nodejs/vue-demos/demo
> vite build

vite v3.0.9 building for production...
✓ 97 modules transformed.
dist/index.html                       0.59 KiB
dist/assets/entry/index88af950d.js    7.65 KiB / gzip: 3.37 KiB
dist/assets/file/indexb5ddd979.css    5.55 KiB / gzip: 1.71 KiB
dist/assets/file/vendoref364db9.css   11.32 KiB / gzip: 2.20 KiB
dist/assets/chunk/vendor3fe3251a.js   1284.46 KiB / gzip: 442.74 KiB

(!) Some chunks are larger than 500 KiB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/guide/en/#outputmanualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.

解决方法

两种方案:

  1. 上调限制的上限,比如又 500KB 调整到 1500KB
  2. 将代码分割成多个chunk。

下面是一个完整的vite.config.js示例:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  server: {
    proxy: {
      "/api": {
        target: "https://localhost",
        changeOrigin: true,
        secure: false,
      },
    },
  },
  plugins: [vue()],
  build: {
    chunkSizeWarningLimit: 1500,
    rollupOptions: {
      output: {
        manualChunks(id) {
          if (id.includes('node_modules')) {
            return id.toString().split('node_modules/.pnpm/')[1].split('/')[0].toString();
          }
        }
      }
    }
  }
})

修改成功之后的效果如下:

$ pnpm run build

> demo@0.0.0 build /codes/vue-demos/demo
> vite build

vite v3.0.9 building for production...
✓ 92 modules transformed.
Generated an empty chunk: "@vue_devtools-api@6.2.1"
Generated an empty chunk: "vue@3.2.37"
dist/index.html                                       1.14 KiB
dist/assets/@vue_devtools-api@6.2.1.1dfaf4cc.js       0.00 KiB / gzip: 0.02 KiB
dist/assets/index.0253962c.js                         7.70 KiB / gzip: 3.35 KiB
dist/assets/@vue_reactivity@3.2.37.37198664.js        9.04 KiB / gzip: 3.53 KiB
dist/assets/@vue_runtime-dom@3.2.37.c1546101.js       6.60 KiB / gzip: 3.03 KiB
dist/assets/@vue_shared@3.2.37.d1f3c7cb.js            3.30 KiB / gzip: 1.61 KiB
dist/assets/vue@3.2.37.2d75cf7d.js                    0.00 KiB / gzip: 0.02 KiB
dist/assets/vue-search-input@1.1.9.c3134eb9.js        3.32 KiB / gzip: 1.49 KiB
dist/assets/vue-search-input@1.1.684e686c.css         2.30 KiB / gzip: 0.72 KiB
dist/assets/axios@0.27.2.ef231355.js                  19.01 KiB / gzip: 7.38 KiB
dist/assets/index.b5ddd979.css                        5.55 KiB / gzip: 1.71 KiB
dist/assets/vue-router@4.1.4_vue@3.2.37.6b4f1a3c.js   22.21 KiB / gzip: 9.13 KiB
dist/assets/@vue_runtime-core@3.2.37.b3417a24.js      36.99 KiB / gzip: 15.41 KiB

这样,node_modules下的模块会被分成多个模块同时被加载,相对于线性加载单独的大文件来说,这样可以加速了页面加载速度。

总结

总的来说,虽然代码分块儿处理了,但分的块儿越多,产生的连接数就越多,建立连接也是耗时的,所以分块儿的数量也要合理控制才好。

听说一键三连点赞的朋友可以升职加薪哈!

### Vite 项目打包优化方法与最佳实践 对于 Vite 项目的打包优化,可以从多个角度入手,包括但不限于插件的选择、资源配置以及工具链的合理利用。以下是详细的优化策略: #### 插件优化 Vite 社区提供了丰富的插件生态,用于提升构建效率和减少最终产物大小。例如,可以通过 `vite-plugin-imagemin` 来压缩图片资源[^2],尽管实际应用中更推荐使用在线工具或专用软件来完成这一任务[^5]。 需要注意的是,并非所有图片都适合通过代码方式进行进一步压缩。某些高质量图像(如经过 Photoshop 处理后的素材)已经达到了最优状态,额外的程序化操作可能会引入不必要的复杂性和性能开销。 #### 配置文件调整 在 `vite.config.js` 文件中定义合理的配置项是实现高效打包的关键之一。具体而言: - **CSS 和 JS 的压缩**:启用生产模式下的自动压缩功能,默认情况下 Rollup 已经集成了 Terser 等工具来进行 JavaScript 缩减;而对于样式表,则可通过专门的插件增强效果。 - **Tree Shaking 支持**:确保仅包含真正被引用到的功能模块,从而削减无用代码体积。 - **动态导入支持**:采用按需加载的方式拆分大块逻辑单元至独立 chunk 中,改善首屏渲染速度并降低初始下载负担。 ```javascript // 示例 vite.config.js 配置片段 import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; export default defineConfig({ plugins: [ vue(), // 添加其他必要的插件... ], build: { rollupOptions: { output: { manualChunks(id) { if (id.includes('node_modules')) { return id.toString().split('node_modules/')[1].split('/')[0]; } }, }, }, }, }); ``` #### 资源管理改进 除了依赖外部库外,在内部也应注重静态资产的有效组织形式。比如将公共组件提取出来形成单独包供多处调用共享,或者借助 CDN 提供常用第三方类库的服务链接地址替代本地嵌入版本[^3]。 另外值得注意的一点在于 Webpack 和 Vite 并不适合在同一工程里长期共存运行时环境切换机制下测试验证可行性而已。 综上所述,针对不同场景选取恰当的技术手段组合运用才能达到理想中的优化目标——既保障用户体验又能维持良好的可维护特性[^1]。 --- ###
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

根叔的修行笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值