为舒缓 Windows
下路径名过长的问题 issues
,稍微加快 require
的速度以及简单隐匿源代码,我们可以选择把应用打包成 asar
档案文件,这只需要对源代码做一些很小的改动。大部分用户可以轻松实现这个功能,因为它在 electron-packager
、electron-forge
和 electron-builder
中都得到了支持,开箱即用。
生成asar包
asar
是一种将多个文件合并成一个文件的类 tar
风格的归档格式。Electron
无需解压整个文件,就可以从其中读取任意文件内容。
可以按如下步骤来将应用打包成 asar
:
- 安装
asar
:
$ npm install -g asar
- 使用
asar pack
打包:
$ asar pack your-app app.asar
使用asar包
在 Electron
中有两类 APIs
,分别是 Node.js
提供的 Node API
和 Chromium
提供的 Web API
。这两种 API
都支持从 asar
包中读取文件。
Node API
由于 Electron
中打了特别补丁, Node API
中如 fs.readFile
或者 require
之类的方法可以将 asar
视之为虚拟文件夹,读取 asar
里面的文件就和从真实的文件系统中读取一样。
示例:
例如假设我们在 /path/to
文件夹下有个 example.asar
包:
$ asar list /path/to/example.asar
/app.js
/file.txt
/dir/module.js
/static/index.html
/static/main.css
/static/jquery.min.js
从 asar
包读取一个文件:
const fs = require('fs');
fs.readFileSync