electron 电子封装:减小封装尺寸

wlzqhblo  于 2023-06-20  发布在  Electron
关注(0)|答案(5)|浏览(136)

我做了一个简单的Electron应用:

  • main.js *
const {app, BrowserWindow} = require('electron')
const path = require('path')
const url = require('url')

let win

function createWindow () {
  win = new BrowserWindow({
    width: 800, 
    height: 600, 
    icon: path.join(__dirname, 'icon.ico')
  })

  win.maximize();

  win.loadURL('https://stackoverflow.com/', {"extraHeaders" : "pragma: no-cache\n"});

  win.on('closed', () => {
    win = null
  })
}

app.on('ready', createWindow)

app.on('browser-window-created',function(e,window) {
    window.setMenu(null);
});

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', () => {
  if (win === null) {
    createWindow()
  }
})

package.json

{
  "name": "test",
  "version": "1.0.0",
  "main": "main.js",
  "build": {
    "appId": "com.test.app",
    "copyright": "test",
    "productName": "test"
  },
  "devDependencies": {
    "electron": "1.7.9",
    "electron-builder": "^19.46.4",
    "electron-packager": "^10.1.0"
  }
}

使用electron-packager,我构建了要发布的包:

electron-packager . --overwrite --asar=true --platform=win32 --arch=ia32 --prune=true --out=release-builds

构建的包总大小为107 MB
有没有人有缩小 Package 尺寸的建议?

nukf8bse

nukf8bse1#

您可以通过使用electron-builder包进行打包来减小电子应用程序的大小。
PicArt是我最近开发的一个electronjs应用。使用reactJS构建最初,当我使用电子打包器打包应用程序时,Window的构建大小约为***98 MB***。然后我发现了这个很棒的样板electron-react,他们在那里配置了电子构建器来生成优化的构建大小。使用这些配置设置后,PicArt的构建现在大约为***36 MB***。
是的,可以减少应用程序的大小,但配置构建设置非常痛苦和耗时。

zlwx9yxi

zlwx9yxi2#

我设法将我的mac应用程序的最终大小从250MB减少到128MB,方法是将'electron'和我的reactJs dependencies移动到package.json中的devDependencies...因为我所需要的就是最后一个bundle.js
但遗憾的是,我不能得到比这更低的,因为电子框架是18MB,如果你正在制作一个小应用程序,这是一些,但我想这是制作跨平台Web应用程序的代价

s6fujrry

s6fujrry3#

我在一个200 MB的应用程序中遇到了同样的问题。最后把它降到176 MB,最后降到55 MB。
以下是我所做的(如果有帮助的话):

*电子构建器:打包应用程序
*剪枝:清理未使用的模块
*清理package.json文件:相依性
打包App:

注意:我做了一个Windows应用程序。
在文档中提到了一个两步的package.json方法,但是在我自己尝试(并确认文档)之后,它就不需要了。
奇怪的是,对我来说,什么工作是删除我的整个“节点模块”文件夹,并运行“npm install”将所有内容都带回来。紧接着,我运行了'npm prune'来清除'Node Modules'文件夹中没有使用的任何内容(即使我刚刚运行了'npm install')。我还仔细检查了electron和electron-builder都不在package.json文件的“dependencies”部分。在这之后,我打包了app/
正如大家可能已经知道的那样,使用electron-builder,您的“dist”文件夹(除非您更改了默认目录)应该直接在“dist”目录中包含一个.exe文件,以及一个包含.exe文件的“未打包”文件夹,该文件取决于同一文件夹中的相关文件。但是,我拥有的.exe文件(直接位于'dist'文件夹中的文件)只有55 MB。虽然公平地说,这个文件确实安装了程序,一旦安装,大小确实会膨胀回171 MB左右。
我会再次张贴,如果我能找到另一种方法来减少文件大小在所有。

piztneat

piztneat4#

电子版对于减小封装尺寸很重要。
不重新编译CEF的情况下,Windows x64上的最小包大小

  • Electron v16.0.2,其中Chromium v96 => 52.9MB
  • Electron v3.1.13,其中Chromium v66 => 32.4MB

您可以从here中选择最佳版本electron

选择版本后如何再次缩小

1.删除客户未使用的文件,如d3dcompiler_47.dll
1.使用更好的压缩算法,如7zip

Windows上Electron v3打包所需的所有文件,例如:

└─App
    │  App.exe
    │  content_shell.pak
    │  ffmpeg.dll
    │  icudtl.dat
    │  natives_blob.bin
    │  node.dll
    │  v8_context_snapshot.bin
    │
    ├─locales
    │      en-US.pak
    │
    └─resources
           App.asar
           electron.asar
pobjuy32

pobjuy325#

有一个问题,一个大的便携式应用程序exe去740 MB。每天我重建它都在变化,我很困惑。(140MB,340MB,140MB,740MB)
它是Angular(16.0.5)Electron(25.1.0)构建版本,我使用了这个非常有用的模板:https://github.com/maximegris/angular-electron/blob/main/electron-builder.json
Angular dist构建约为80 MB,包含音乐和视频等所有资产。
在查看了发生的事情之后,我发现electron-builder.json中的文件在这个模板中没有很好的定义。

"files": [
    "**/*",
    "!**/*.ts",
    "!*.map",
    "!package.json",
    "!package-lock.json",
    {
        "from": "../dist",
        "filter": ["**/*"]
    },

它还复制了所有node_modules和src文件夹,包括所有资产以及所有json和config文件。
我将其更改为这样,只指定需要的文件:

"files": [
    "app/*.js*",
    "app/*/*.js*",
    "app-scripts/copy-config.js", <-- extra file that I needed
    "!**/*.ts",
    "main.js",
    {
        "from": "dist",
        "filter": ["**/*"],
        "to": "app"
    }
],

现在便携式应用程序exe是143 MB不再是740 MB
node_modules文件夹是不需要的,即使你使用电子功能,如:

import {app, BrowserWindow} from 'electron';
import {join, normalize, resolve} from 'path';
import {appendFile, existsSync, mkdirSync, readFile, readFileSync, writeFile} from 'fs';

希望这也能对你有所帮助。

相关问题