最終大小與electron版本相關(guān),如下圖
mac下打包為.app里的內(nèi)容
整個(gè)包的大小基于就是 Frameworks + Resources 的大小
-
Frameworks electron核心(大小174M蔬胯,版本9.0.0)基本沒(méi)有可以優(yōu)化的空間
有一個(gè)electron-boilerplate包朋截,是精簡(jiǎn)化的electron蛹稍,但已經(jīng)3年沒(méi)有更新,用的人也不多
-
Resources app.asar主要是項(xiàng)目打包后的資源和主進(jìn)程使用的node_modules部服,所以優(yōu)化app.asar為主(win也是)
app.asar中的內(nèi)容package.json中沒(méi)有區(qū)分哪些依賴是主進(jìn)程的唆姐,所以需要使用雙package.json
雙package.json
electron-builder支持雙package.json,用法:
-
根目錄添加 app 文件夾廓八,其下添加 package.json 文件奉芦。
這時(shí)electron-builder打包時(shí)讀取 app/package.json 配置
{ "name": "應(yīng)用名", "version": "0.1.0", "private": true, "main": "./bundled/background.js", // => 項(xiàng)目根目錄/app/bundled "dependencies": { // 主進(jìn)程使用的依賴 "sequelize": "^6.3.5", "sqlite3": "^4.2.0" } }
-
修改打包輸出路徑。使用app后剧蹂,打包時(shí)僅訪問(wèn)此文件夾声功,所以需要將項(xiàng)目output到app里(默認(rèn)為dist)
// vue.config.js ... outputDir: 'app/bundled', ... // pack.config.js or 根package.json ... // 指定了就出不來(lái)了,官網(wǎng)的解釋是:No need to specify which files to include in the app // files: ['bundled/*'], ... directories: { output: 'release', // =>根/release 不要放在app內(nèi)宠叼,app下所有文件都會(huì)打進(jìn)去 }, ...
以上配置打包后先巴,Resources app.asar 為38M,整體包縮小近100M冒冬。
安裝npm全局asar包筹裕,
asar extract app.asar ./temp
可解壓asar查看里面的內(nèi)容