【前言】
回顾之前的章节
打包应用这里还有一个优化点,本节来优化一下
【对比Electron应用】
对比几个electron应用的文件结构
vscode,app文件夹下可以看到部分源码
某网盘,app对应的位置是一个app.asar文件,无法直接打开
本文应用vq,app文件夹下可以看到所有源码
看到这里有几个问题
1.为什么有的应用app文件夹下可以看到所有源码(相信我,不仅仅是示例的vq应用)
2.为什么有的应用下是一个app.asar完全看不到
3.为什么vscode没有完全采用app.asar这种方式
【asar】
其实asar就是tar文件,也就是一种压缩文件的格式,可以方便的压缩和解压缩
electron也提供了asar这个npm库,方便大家使用:https://github.com/electron/asar
安装,可以全局或者项目内安装
npm i -g asar
解压缩一个asar文件
asar extract app.asar ./app
拿上述某网盘的asar来解压缩,内容如下
压缩文件夹为asar文件
asar pack test test.asar
【添加electron-dist文件夹】
到目前为止,vq应用打包后有一个问题,
可以看到打包后的app文件夹下不但能看到所有源码,
还能看到renderer-index和renderer-login两个渲染文件夹下的源码,
这里其实只需要dist下的文件即可,不需要吧src等都打包进去,
所以目前的代码结构
electron-pack:负责打包相关
electron-src:放应用源码
electron-out:放打包好的应用和dmg
还缺一个electron-dist文件夹,放构建好的应用源码,而不是electron-src
添加一个脚本,将dist相关的文件夹和文件复制到electron-dist下
再次打包,可以看到打包后应用内只有需要的dist文件了
以上代码详见:https://github.com/insistime-guides/electron-guides/tree/0.1.8
【electron-packager打包asar】
目前已经将需要的dist单独提到electron-dist文件夹了,
然后就可以使用electron-packager将app文件夹打包为app.asar了,
在electron-packager的配置文件中设置asar为true即可,
详见:https://electron.github.io/electron-packager/main/interfaces/electronpackager.options.html#asar
打包后的mac应用宝内容,可以看到已经变为了app.asar
启动也正常,解压缩app.asar可以看到内部文件也正确
以上代码详见:https://github.com/insistime-guides/electron-guides/tree/0.1.9
【asar其他】
关于asar的操作还有一些
1.基于asar做加密,这样不能简单的通过asar这个npm库解压缩文件看到源码
2.基于asar做版本热更新等
后续章节再介绍
【总结】
1.了解常见的几种electron应用app文件夹组织方式
2.了解asar文件格式
3.添加electron-dist文件夹,只保存构建后的文件
4.使用electron-packager打包app.asar文件