微信小游戲如何突破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服務器。