Electron应用.asr压缩后SteamPipe更新及文件排除问题咨询
解决Electron + SteamPipe中.asr文件拆分更新的问题
先解决asr.uncompressed目录未生成的问题
你之前尝试排除文件无效,大概率是配置路径或位置不对,以下是针对不同Electron打包工具的正确配置方式:
如果你用的是Electron Builder(npm run make默认依赖它)
在项目根目录的package.json里添加build配置,明确指定要从.asr中拆分的文件:
"build": { "asar": true, "asarUnpack": [ // 用通配符或具体路径匹配你要排除的.js文件 "**/frequent-update-*.js", "src/utils/constant.js" ] }
注意路径是相对于打包后的app目录,不是项目根目录的路径。比如你的.js文件在项目src/js下,打包后会被放到app目录的js文件夹,所以配置里写js/*.js即可。
如果你用的是Electron Forge
修改项目根目录的forge.config.js,在packagerConfig里配置:
module.exports = { packagerConfig: { asar: true, asarUnpack: [ 'js/frequent-update-1.js', 'js/frequent-update-2.js' ] }, // 其他配置... };
配置后重新执行npm run make,你要找的拆分文件会在打包产物的resources/app.asr.unpacked目录下(不是你说的asr.uncompressed,可能是记混了目录名)。
拆分后SteamPipe的更新逻辑
把频繁修改的.js文件从.asr中拆分出来后:
- 媒体文件依然留在.asr包里,因为不常更新,SteamPipe只会在.asr本身变化时才上传完整包
- 每次修改.js文件后,SteamPipe对比文件时只会检测到这些拆分出来的.js文件的变化,只需要上传几KB的变更内容,和你之前未用.asr时的更新逻辑一致,完全不需要每次上传整个大.asr文件。
验证配置是否生效的小技巧
执行npm run make后,打开打包后的resources目录:
- 确认
app.asr存在(这是压缩后的主包) - 打开
app.asr.unpacked,检查你要拆分的.js文件是否出现在里面 - 如果还是没有,检查配置里的路径是否和实际打包后的文件结构匹配,或者有没有自定义脚本覆盖了asar的配置参数。
内容的提问来源于stack exchange,提问作者Marcin
相关产品推荐
相关产品推荐

