如何解决uni-app编译后vendor.js文件过大问题:--minimize与分包优化

一、uni-app编译后vendor.js文件过大

  采用uni-app开发的微信小程序,发布时工具提示vendor.js过大,已经跳过es6向es5转换。查看后发现编译后代码中common/vendor.js已超过500k,所以需要体积控制。

  有以下 2 种需要注意:

(1)HBuilderX创建的项目:勾选运行 –> 运行到小程序模拟器 –> 运行时是否压缩代码

(2)使用cli创建的项目,可以在 pacakge.json中 添加参数 –minimize,示例:“dev:mp-weixin”: “cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch --minimize”

  项目是用的 cli 创建的项目,之前的构建命令没有加上 --minimize,我加上了之后,再打包,亲测构建物显著减少 50% 以上,从 1.7M 降到了 900k,然后就可以成功上传微信了。

  这个文档上有描述:https://uniapp.dcloud.net.cn/collocation/vue-config.html

二、小程序分包后vendor还是过大

  使用分包之后会发现遇到了一个奇怪的问题,子包的组件和 js 文件会被打包到主包的vendor.js文件中,这就导致了vendor.js过大引起主包超过2M。

  打开 manifest.json —> 源码视图 —> mp-weixin节点下,添加以下代码

"optimization": {
  "subPackages": true
}

  会发现分包的 js 文件将不会再打包到主包的vendor.js中了。

"mp-weixin" : {
        "appid" : "***",
        "setting" : {
            "urlCheck": true,
            "es6": false,
            "minified": true,
            "bigPackageSizeSupport": true
        },"permission": {
          "scope.userLocation": {
            "desc": "你的位置信息将用于小程序位置接口的效果展示"
          }
        },
        "requiredPrivateInfos": [
          "getLocation"
        ],
        "usingComponents": true,
        "optimization": {
          "subPackages": true
        }
    },

  我加了上述几个配置,然后从 900多k降到 600 多k了,亲测有效。

  可以看看这个文档:https://uniapp.dcloud.net.cn/collocation/manifest.html#mp-weixin

 

posted @ 2020-03-07 20:35  古兰精  阅读(5636)  评论(0编辑  收藏  举报