Electron打包后大小優(yōu)化

最終大小與electron版本相關(guān),如下圖

mac下打包為.app里的內(nèi)容

整個(gè)包的大小基于就是 Frameworks + Resources 的大小

  • Frameworks electron核心(大小174M,版本9.0.0)基本沒有可以優(yōu)化的空間

    有一個(gè)electron-boilerplate包,是精簡(jiǎn)化的electron,但已經(jīng)3年沒有更新,用的人也不多

  • Resources app.asar主要是項(xiàng)目打包后的資源和主進(jìn)程使用的node_modules,所以優(yōu)化app.asar為主(win也是)

    app.asar中的內(nèi)容

    package.json中沒有區(qū)分哪些依賴是主進(jìn)程的,所以需要使用雙package.json

雙package.json

electron-builder支持雙package.json,用法:

  1. 根目錄添加 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" 
        } 
    }
    
  2. 修改打包輸出路徑。使用app后,打包時(shí)僅訪問此文件夾,所以需要將項(xiàng)目output到app里(默認(rèn)為dist)

    // vue.config.js
    ...
      outputDir: 'app/bundled',
    ...
    
    // pack.config.js or 根package.json
    ...
      // 指定了就出不來了,官網(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。

參考electron-builder官網(wǎng)

安裝npm全局asar包,asar extract app.asar ./temp可解壓asar查看里面的內(nèi)容

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容