vite配置打包分包

本文介绍了如何在Vite项目的构建配置中,通过`vite.config.ts`的rollupOptions,将node_modules文件夹中的包与业务代码独立管理,实现按需拆分输出.

将node_modules文件中的包与项目的业务代码,区分为不同的包

// vite.config.ts
build: {
    rollupOptions: {
      output: {
        manualChunks(id){
          if(id.includes('node_modules')){
            return id.toString().split('node_modules/')[1].split('/')[0].toString();
          }
        }
      }
    }
 }
### 动态导入(Dynamic Import)实现按需加载 在 Vite 项目中,可以通过动态导入(`import()`)来实现按需加载,从而将大块代码拆分成多个小 chunk。这种方式特别适用于组件、页面或功能模块的懒加载。 ```ts // 示例:动态导入组件 const LazyComponent = () => import('./components/LazyComponent.vue'); ``` 通过这种方式,可以将 `LazyComponent.vue` 拆分为单独的 chunk,而不是将其包含在主包中。这种方法可以显著减少初始加载的 chunk 体积,提高首屏加载速度[^1]。 --- ### 手动分包(Manual Chunks) Vite 使用 Rollup 作为打包工具,可以通过 `build.rollupOptions.output.manualChunks` 配置项手动控制 chunk 的生成策略。例如,将常用的第三方库(如 VueVue Router、Vuex 等)提取到一个单独的 chunk 中。 ```ts // vite.config.ts import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; export default defineConfig({ plugins: [vue()], build: { rollupOptions: { output: { manualChunks: { vendor: ['vue', 'vue-router', 'vuex'], }, }, }, }, }); ``` 通过上述配置,所有依赖于 `vue`、`vue-router` 和 `vuex` 的模块将被打包到一个名为 `vendor.js` 的独立 chunk 中。这种分包方式可以显著减少主 chunk 的体积,提高加载效率[^1]。 --- ### 调整 chunk size 警告阈值 如果希望忽略某些 chunk 的大小警告,可以通过 `build.chunkSizeWarningLimit` 配置项调整 chunk 体积的警告阈值。默认情况下,Vite 会警告超过 500 KiB 的 chunk。 ```ts // vite.config.ts import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; export default defineConfig({ plugins: [vue()], build: { chunkSizeWarningLimit: 2000, // 单位为 KB }, }); ``` 通过设置更高的阈值,可以避免某些 chunk 的体积警告。但需要注意,过大的 chunk 会影响页面加载性能,因此建议优先优化 chunk 的分包策略。 --- ### 结合 Tree Shaking 与压缩优化 Vite 默认使用 Rollup 进行打包,支持 Tree Shaking,可以自动移除未使用的代码,减少打包体积。此外,可以结合压缩插件(如 `rollup-plugin-terser`)进一步优化输出文件。 ```ts // vite.config.ts import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; import { terser } from 'rollup-plugin-terser'; export default defineConfig({ plugins: [ vue(), terser(), ], }); ``` 通过启用 `terser` 插件,可以对输出的 JavaScript 文件进行压缩,减少文件体积,提高加载速度[^2]。 --- ### 总结 通过动态导入(`import()`)和手动分包(`manualChunks`),可以有效优化 Vite 打包时 chunk 体积过大的问题。此外,调整 chunk size 警告阈值和结合 Tree Shaking 与压缩插件,可以进一步提升打包性能和加载效率。这些优化策略能够显著减少主 chunk 的体积,提高首屏加载速度[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Agwenbi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值