【前言】

回顾之前的章节

打包应用这里还有一个优化点,本节来优化一下

【对比Electron应用】

对比几个electron应用的文件结构

vscode,app文件夹下可以看到部分源码

electron axios 配置请求头_asar

某网盘,app对应的位置是一个app.asar文件,无法直接打开

electron axios 配置请求头_packager_02

本文应用vq,app文件夹下可以看到所有源码

electron axios 配置请求头_electron_03

看到这里有几个问题

1.为什么有的应用app文件夹下可以看到所有源码(相信我,不仅仅是示例的vq应用)

2.为什么有的应用下是一个app.asar完全看不到

3.为什么vscode没有完全采用app.asar这种方式

【asar】

其实asar就是tar文件,也就是一种压缩文件的格式,可以方便的压缩和解压缩

electron axios 配置请求头_packager_04

 

electron也提供了asar这个npm库,方便大家使用:https://github.com/electron/asar

 

安装,可以全局或者项目内安装

npm i -g asar

解压缩一个asar文件

asar extract app.asar ./app

 拿上述某网盘的asar来解压缩,内容如下

electron axios 配置请求头_asar_05

压缩文件夹为asar文件

asar pack test test.asar

 

electron axios 配置请求头_解压缩_06

【添加electron-dist文件夹】

到目前为止,vq应用打包后有一个问题,

electron axios 配置请求头_electron_03

可以看到打包后的app文件夹下不但能看到所有源码,

还能看到renderer-index和renderer-login两个渲染文件夹下的源码,

这里其实只需要dist下的文件即可,不需要吧src等都打包进去,

所以目前的代码结构

electron-pack:负责打包相关

electron-src:放应用源码

electron-out:放打包好的应用和dmg

还缺一个electron-dist文件夹,放构建好的应用源码,而不是electron-src

electron axios 配置请求头_asar_08

添加一个脚本,将dist相关的文件夹和文件复制到electron-dist下

electron axios 配置请求头_解压缩_09

再次打包,可以看到打包后应用内只有需要的dist文件了

electron axios 配置请求头_packager_10

 

以上代码详见: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

electron axios 配置请求头_github_11

启动也正常,解压缩app.asar可以看到内部文件也正确

electron axios 配置请求头_asar_12

 

以上代码详见: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文件