vite打包优化分片打包依赖包详解
作者:Mr__proto__
这篇文章主要介绍了vite打包优化分片打包依赖包,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
vite打包优化分片打包依赖包
在开发Vue3项目时,我们使用vite进行构建,由于项目中开发的是地图大屏项目,依赖较多
为了提高用户体验减少用户等待的时间,对此进行优化:
拆分打包的方法
// vite.config.ts
output: { // 配置rollup输出选项 // Static resource classification and packaging//静态资源分类打包 chunkFileNames: 'assets/js/[name]-[hash].js', //代码块文件名 entryFileNames: 'assets/js/[name]-[hash].js', //入口文件名 assetFileNames: 'assets/[ext]/[name]-[hash].[ext]', // 资源文件名 manualChunks(id) { if (id.includes('node_modules')) { return id .toString() .split('node_modules/')[1] .split('/')[0] .toString() } }, },
解释:1
- chunkFileNames 代码块文件名,统一放到assets/js/目录下
- entryFileNames 入口文件名,统一放到assets/js/目录下
- assetFileNames 资源文件名,统一放到assets/js(jpg/png/ttf/css等)/目录下
解释:2
manualChunks 此配置内进行分包,进行分离带三方依赖
上述拆分方式是自动将所有的包都单独拆分出来,优点就是不用手动配置,但是也有缺点,就是有的第三方包体积很小,会拆分出大量文件,反而降低请求效率
踩坑
当项目使用pnpm进行管理包的时候再进行打包就会打出一个非常大的.pnpm包,这就不符合我们的预期了,我们要的就是小一点的包来进行本地缓存
还不知道怎么解决,目前就是不使用pnpm就恢复正常了
-----------------我是分割线-----------------
已经找到解决方法,但是这种打包拆分的方法也不是很好,缺点就是拆分的颗粒度太小,分包太多也是会降低速度的
build: { outDir: 'dist', minify: 'esbuild', // 禁用 gzip 压缩大小报告,可略微减少打包时间 reportCompressedSize: false, // 规定触发警告的 chunk 大小 chunkSizeWarningLimit: 2000, rollupOptions: { //配置rollup output: { // 配置rollup输出选项 // Static resource classification and packaging//静态资源分类打包 chunkFileNames: `assets/js/[name]-${visonInfo}-[hash].js`, //代码块文件名 entryFileNames: `assets/js/[name]-${visonInfo}-[hash].js`, //入口文件名 assetFileNames: `assets/[ext]/[name]-${visonInfo}-[hash].[ext]`, // 资源文件名 manualChunks(id) { if (id.includes('node_modules')) { //使用pnpm打包 return id.toString().split('node_modules/')[2].split('/')[0].toString() } }, }, }, },
简单的说就是,找的位置不对,直接找到.pnpm文件下的插件文件下的node_modules文件夹下,就对了,
例如:
/Users/li/project/gongsi/vue3_flow_monitoring/node_modules/.pnpm/@antv+algorithm@0.1.26/node_modules/@antv/algorithm/lib/structs/queue.js?commonjs-exports
再进行截取就行了
这回就没有超级大的包了。。。。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。