提问人:Gab 提问时间:11/17/2023 最后编辑:Gab 更新时间:11/19/2023 访问量:64
如何优化 Electron JS 应用程序的大小?
How can I optimize an Electron JS application size?
问:
我使用 React(使用 Vite)和 Electron JS 制作了一个简单的桌面应用程序。我只检查了 React 应用程序(CSS、js 和 html)的最终文件的包大小,正如预期的那样,它非常非常低。
然后我使用 Electron builder 进行打包,选择将其移植到 Windows 上,但与 React 捆绑包大小相比,生成的应用程序的大小大得非常大,它是 168MB,我不知道该怎么做才能让它更小。我一直在搜索 Electron 和 Electron builder 文档,但我没有得到答案,谁能帮我?
我尝试优化 React 应用程序的性能,我做到了,但没有任何改变 Electron builder 制作的最终可执行文件的大小
package.json 配置:
{
"name": "venedolar-app",
"private": true,
"version": "1.0.0",
"description": "Monitor application that displays the currencies of Venezuela up to date",
"type": "module",
"main": "dist/electron.cjs",
"scripts": {
"dev": "vite",
"start": "electron .",
"build": "tsc && vite build",
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite preview",
"pack": "electron-builder --dir",
"dist": "electron-builder"
},
"author": "Gabriel Trujillo",
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^6.4.2",
"@fortawesome/free-solid-svg-icons": "^6.4.2",
"@fortawesome/react-fontawesome": "^0.2.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"sass": "^1.69.5"
},
"devDependencies": {
"@types/react": "^18.2.15",
"@types/react-dom": "^18.2.7",
"@typescript-eslint/eslint-plugin": "^6.0.0",
"@typescript-eslint/parser": "^6.0.0",
"@vitejs/plugin-react-swc": "^3.3.2",
"electron": "^27.0.3",
"electron-builder": "^24.6.4",
"eslint": "^8.45.0",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.3",
"typescript": "^5.0.2",
"vite": "^4.4.5"
},
"build": {
"appId": "com.venedolar.app",
"productName": "Venedolar",
"copyright": "Copyright @ 2023 Gabriel Trujillo, Diego Peña",
"win": {
"icon": "dist/icon2.ico",
"target": [
"portable"
],
"artifactName": "Venedolar1.0_portable.exe"
},
"directories": {
"output": "build",
"buildResources": "dist"
},
"files": [
"dist/**/*"
]
}
}
答:
0赞
Arkellys
11/17/2023
#1
打包的应用程序总是比你的源代码大,因为它包含 Electron 二进制文件,大小约为 150mb(适用于 Windows)。您只能优化资源文件夹的大小,该文件夹是打包代码的一部分。
根据您的配置,您不仅可以打包捆绑的文件:
"files": [
"dist/**/*",
"public/electron.cjs",
"node_modules/**/*",
"package.json"
]
捆绑文件后,您将不再需要该文件夹,这将增加应用的大小。理想的情况是拥有:node_modules
"files": [
"dist/**/*",
]
在你的情况下,这意味着你应该告诉 Vite 也捆绑 .我对这个打包器不够熟悉,所以我无法给你一个配置。electron.cjs
评论
0赞
Gab
11/19/2023
嗨,我再次尝试过,但仍然相同的输出,结果是大小为 68mb 的工件,并且在 win_unpacked 文件夹中,再次是大小为 168mb 的应用程序,我已经添加了整个 package.json 配置
0赞
Arkellys
11/19/2023
@Gab .exe安装程序为 68mb,应用程序为 168mb,对我来说.exe听起来很正常。别忘了你的应用程序附带了 chromium,它不适合 5mb。最小大小通常为 ~150mb,只能优化资源文件夹的大小。我将编辑我的答案以包含这些信息。
0赞
Arkellys
11/19/2023
如果删除时大小没有改变,那么它们可能已经以某种方式删除了,您可以通过检查内部来检查打包的内容(您可以在配置中暂时禁用)。node_modules
app.asar
asar
0赞
Gab
11/20/2023
明白了,谢谢你的帮助,我尝试了一下,它减少了 1MB 的 LMAO,但至少它是一些东西,我如何检查 app.asar?
0赞
Arkellys
11/20/2023
@Gab,如果禁用,则可以看到打包的内容:(但仅执行此操作以检查,保持为 prod 启用)。asar
asar: false
asar
上一个:如何让蒙特卡洛树搜索算法更快,迭代次数更少?[关闭]
下一个:如何使用并行加速优化
评论
"build": { "appId": "com.venedolar.app", "productName": "Venedolar", "copyright": "Copyright @ 2023 Gabriel Trujillo, Diego Peña", "win": { "icon": "dist/icon2.ico", "target": [ "portable" ], "artifactName": "Venedolar1.0_portable.exe" }, "directories": { "output": "build", "buildResources": "dist" }, "files": [ "dist/**/*", "public/electron.cjs", "node_modules/**/*", "package.json" ] }
在这里