当前位置: 首页 > 知识库问答 >
问题:

小程序 - uniapp,如何在打包时分割vendor文件?

郎正初
2024-06-08

uniapp,如何在打包时分割vendor文件。

使用vite+vue3开发,然后打包成微信小程序,打包后的主包vendor太大,由于首页用到了echarts,想要单独分开这个
我试过在vite.config.js文件配置build打包,但是看到打包后的文件,并没有分割vendor主文件,ehcart没有提取出来

有没有大佬知道怎么分割这个主包文件?

build: {        // 配置分包        rollupOptions: {          output: {            manualChunks(id) {                if (id.includes('node_modules')) {                    return id.toString().split('node_modules/')[1].split('/')[0].toString();                }            }          }        },    }

或者

build: {        // 配置分包        rollupOptions: {          output: {            manualChunks: {                'echarts':['echarts'],             }          }        },    }

共有1个答案

戴鸿羲
2024-06-08

答案如下:

在Vite中,使用rollupOptionsmanualChunks选项可以帮助你手动拆分chunks。但是,由于uni-app打包微信小程序时,它的打包逻辑可能与纯Vite项目有所不同,可能需要额外的配置。

在你提供的代码中,你已经尝试使用了manualChunks,但是可能由于uni-app的特殊打包机制,这些配置并没有生效。

对于uni-app的微信小程序打包,uni-app本身提供了一些配置选项来优化打包结果。你可以尝试使用mini.optimization选项中的splitChunks配置来手动分割vendor文件。

这里有一个可能的配置示例:

export default {  // ... 其他配置 ...  mini: {    // ... 其他微信小程序配置 ...    optimization: {      splitChunks: {        // 这里的配置可能会根据你的项目实际情况有所不同        cacheGroups: {          echarts: {            name: 'echarts',            test: /[\\/]node_modules[\\/]echarts[\\/]/,            priority: 20, // 优先级            chunks: 'all'          },          // 你可以添加更多的cacheGroup来分割其他的库          // ...        },      },    },  },  // ... 其他配置 ...}

这个配置将会把echarts库单独分割成一个文件。注意,test字段是一个正则表达式,用于匹配需要分割的模块路径。

然后,你需要在你的页面或者组件中正确地引入echarts,以便uni-app的打包工具能够识别并应用这个分割配置。

请注意,这只是一个基本的示例,具体的配置可能会根据你的项目结构和需求有所不同。你可能需要根据你的项目实际情况调整这个配置。

另外,如果你发现这个配置没有生效,那么可能需要检查你的项目是否还有其他相关的配置可能会影响这个行为,或者查看uni-app的官方文档和社区,看看是否有其他开发者遇到了类似的问题,并找到了解决方案。

 类似资料:
  • 本文向大家介绍如何解决vue打包vendor过大的问题?相关面试题,主要包含被问及如何解决vue打包vendor过大的问题?时的应答技巧和注意事项,需要的朋友参考一下 1、在webpack.base.conf.js新增externals配置,表示不需要打包的文件,然后在index.html中通过CDN引入 2、使用路由懒加载 官网

  • 问题内容: 我想从特定的行号中拆分一个400k行长的日志文件。 对于这个问题,让我们将其设为任意数字300k。 是否有Linux命令允许我执行此操作( 在脚本内 )? 我知道可以按大小或行号将文件分成相等的部分,但这不是我想要的。我想要一个文件中的前300k,第二个文件中的最后100k。 任何帮助,将不胜感激。谢谢! 再三考虑,这将更适合于超级用户或服务器故障站点。 问题答案: file_name

  • 例如: 打包时候,vconsole总是被打包到chunk-vendors中,没有单独打成一个chunk,这么配置如何修改,才能实现异步加载vconsole?

  • HBulidX 这个提示的输入框根本无法输入y/n,直接就是个ESC开头这些,并不能输入任何字符。 虽然我知道可以手动打开工具开放端口

  • 问题内容: 我已经使用Netbeans开发了Java桌面应用程序。在我的应用程序中,我使用了一些属性文件,并将其放置在Project文件夹下,以便可以使用类似的代码来访问它 但是,当我将应用程序部署并打包到.jar文件时,我找不到属性文件在哪里,并且我的应用程序无法从属性文件读取值。 我该如何解决该错误,我应该在哪里放置我的属性文件并将其加载? 问题答案: 将其放在下面,然后按如下所示使用它。 N

  • config.js里怎么配置,配置好后又怎么知道打的包是开发环境的包还是生产环境的包? app是不是不能打包?有人试过么?

  • 问题内容: 如何在MySQL存储过程中拆分逗号分隔的文本(ID列表)以在SQL“ IN”语句中使用结果。 问题答案: 您可以通过两种方式做到这一点: SQL库 原生与REGEXP