微信小游戏如何突破4M限制?微信小游戏大小
微信小游戏如何突破4M限制?
首先小游戏js目录下的库是不是min的,比如eui.min.js,还是eui.js。
如果是eui.js则是没有压缩的。你需要修改scripts/config.wxgame.ts中的
new CompilePlugin({ libraryType: "debug", defines: { DEBUG: true, RELEASE: false} }),
修改为
new CompilePlugin({ libraryType: "release", defines: { DEBUG: false, RELEASE: true} }),
然后再编译一次,这样发布的库才能是压缩后带min的。
分包加载
比如resource下有如下资源,并在default.res.json里也按照这个分的资源组
preload 预加载资源 图片5张 0.5m
home 主页资源 图片5张 0.5m
game 游戏资源 图片30张 3m
那么可以主包只加载preload+home
再使用wx.loadSubpackage加载分包game (https://developers.weixin.qq.com … se/subpackages.html[/url])
再使用RES.loadGoup(“game”),这样就可以和常规h5项目一样正常使用资源了。
关键点:
没将game配置成分包资源时,会提示超出大小。将game配置成分包后,就不会提示了。
egret中使用分包加载资源时,先wx.loadSubpackage加载分包,让资源先躺在resource/game目录下,再RES.loadGroup,就可以常规使用了 。
服务器加载资源
首先修改 script/config.wxgame.ts 文件,在发布过程中添加 ResSplitPlugin 插件:
commands: [
new CleanPlugin({ matchers: ["js", "resource"] }),
new CompilePlugin({ libraryType: "release", defines: { DEBUG: false, RELEASE: true } }),
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
new WxgamePlugin(),
new UglifyPlugin([{
sources: ["main.js"],
target: "main.min.js"
},{
sources: ["resource/default.thm.js"],
target: "default.thm.min.js"
}
]),
new ResSplitPlugin({
matchers:[
{from:"resource/**",to:`../${projectName}_wxgame_remote`}
]
}),
new ManifestPlugin({ output: 'manifest.js' })
注意:这里加上 new ResSplitPlugin 如果报错的话需要在最上面import 这个ResSplitPlugin插件一下。
在这里插入图片描述
该插件的用意是,在您执行 egret publish 时,将 resource 文件夹的所有内容发布到 projectname_wxgame_remote 文件夹,而非 projectname_wxgame 文件夹中,这样游戏资源就不会被打包进微信项目。**
然后修改你的 Main.ts 中的配置加载代码,修改为 RES.loadConfig(“default.res.json”,“你的服务器地址”);
执行egret publish命令,在项目的上一级目录你会发现projectname_wxgame_remote文件夹,将里面的resource文件夹放到你的服务器中。
你的服务器必须有备案,并且是https://,如果不是则微信开发者工具中报错如下:在这里插入图片描述
这里可以勾选,就可以加载啦。不过真机预览的时候需要打开调试模式才可以加载到。这里只是调试用,正式上线必须使用备案的https服务器。