vite3打包优化

打包文件分类

在没有配置之前打包的文件都是一把嗦
在这里插入图片描述

 build: {
    rollupOptions: {
      output: {
        chunkFileNames: 'static/js/[name]-[hash].js',
        entryFileNames: 'static/js/[name]-[hash].js',
        assetFileNames: 'static/[ext]/[name]-[hash].[ext]'
      }
    }
  }

配置之后就会每种类型的文件放在各自的文件夹上(但是包大小还是不变的)
在这里插入图片描述

大文件拆分

打包结束的时候你可能会发现
在这里插入图片描述
意思就是说有些包超过最大的包大小限制500k,你可以设置包大小的上限,但是没卵用。整体的包不会缩小

 build:{
    chunkSizeWarningLimit: 1500,
  }

最好的解决办法就是大文件进行切割

 build: {
    rollupOptions: {
      output: {
        manualChunks(id) {
          if (id.includes('node_modules')) {
            return id.toString().split('node_modules/')[1].split('/')[0].toString()
          }
        }
      }
    }
  }

这样你就会把大的依赖包给单独打包出来。那么你就可以进行针对性的优化了。就像我这里,这两个依赖包都太大了
在这里插入图片描述

接着进行大文件的压缩

 npm i vite-plugin-compression -D
//vite.config.ts
//开启压缩
import viteCompression from 'vite-plugin-compression'

plugins:[  viteCompression({
      verbose: true,
      disable: false,
      threshold: 10240,
      algorithm: 'gzip',
      ext: '.gz'
    })
    ]

此时打开一看你会发现压缩的文件已经生成了

在这里插入图片描述
在这里插入图片描述

那么既然开启了压缩配置,nginx也是需要配合

 server {
        listen       8080;
        server_name  localhost;
        #gzip
        #开启gzip功能
        gzip on; 
        #开启gzip静态压缩功能
        gzip_static on; 
        #gzip缓存大小
        gzip_buffers 4 16k;
        #gzip http版本
        gzip_http_version 1.1;
        #gzip 压缩级别 1-10 
        gzip_comp_level 5;
        #gzip 压缩类型
        gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
        # 是否在http header中添加Vary: Accept-Encoding,建议开启
        gzip_vary on;
    }

### 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]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值