Electron Builder 应用程序大小过大。

9
我发现使用electron-builder生成的MyApp.exe文件大小接近500M。我不确定原因,因为之前只有ia32或x64时,大小大约为196M。我也查看了link,它只提到了55MB-60MB左右。所以问题是,为什么我的exe文件大小如此之大?我的应用程序本身非常小,如果electron只有33MB左右,那么所有额外的空间都在哪里?
以下是我的package.json条目:
"build": {
"appId": "com.electron.myApp",
"publish": [
  {
    "provider": "generic",
    "url": "https://myAppServer"
  }
],
"win": {
  "target": [
    {
      "target": "nsis",
      "arch": [
        "ia32"
      ]
    }
  ]
},
"asar": false,
"nsis": {
  "oneClick": true,
  "perMachine": false,
  "artifactName": "${productName}-Setup-${version}.${ext}"

}    
"devDependencies": {
 "electron": "^1.7.9",
 "electron-installer-windows": "^0.2.0",
 "electron-builder": "^19.45.5",
 "electron-packager": "^8.5.2",
 "electron-winstaller": "^2.5.2",
 "grunt-electron-installer": "^2.1.0"
},
"dependencies": {
 "auto-launch": "^5.0.1",
 "cron": "^1.2.1",
 "electron-config": "^0.2.1",
 "electron-positioner": "^3.0.0",
 "electron-squirrel-startup": "^1.0.0",
 "electron-window": "^0.8.1",
 "electron-updater": "^2.16.1",
 "fs": "^0.0.1",
 "homedir": "^0.6.0",
 "https": "^1.0.0",
 "https-proxy-agent": "^1.0.0",
 "line-by-line": "^0.1.5",
 "pac-proxy-agent": "^1.0.0",
 "url": "^0.11.0",
 "winreg": "^1.2.3",
 "xml2js": "^0.4.17"
} 
}

这是 Electron 应用程序的预期大小吗?有没有办法让它更小?

祝好, Arun


我认为@MertSimsek的答案是正确的,因为现在你正在将所有东西打包到devDependencies中,这些都是大型软件包。 - Joshua
6
我已经找出问题所在。我的 Electron 根目录里有一个“Output”目录,我把最终的 MSI 文件存放在那里。打包时会把这个目录也一并打包进去,导致文件大小不断增加。 - Arun Krishnan
1
重建后,我的应用程序现在只有39MB,这个大小好多了 :-) - Arun Krishnan
@ArunKrishnan 你是怎么改变输出文件夹的? - msdos
1
你可以在 package.json 文件中修改这个。 "scripts": {    "build": "electron-packager . <package name> --platform win32 --arch x64 --out <Build directory name>  这样应该就能行了。此外,在任何新的构建之前,请确保您的构建目录是干净的。这样您就可以确保不会将旧版本也打包起来了。 - Arun Krishnan
3个回答

10

您可以尝试使用npm prune --production命令,但即使是最简单的Electron应用程序也会有大约100MB。


我使用了这个东西,现在似乎出了点问题。当我运行“npm run dist”时,会出现很多错误,以TypeError: t.toLowerCase不是函数开始。不确定发生了什么。它是否删除了一些必需的包? - Arun Krishnan
看起来它删除了一堆软件包,然后重新安装并构建。现在可以工作了。感谢您的帮助。 - Arun Krishnan

2
我将把Arun的评论转化为答案,因为我差点错过了它,而且正是这个解决了我的问题:

我找出了问题所在。我在我的电子根目录中有一个输出目录,我在那里存储我的最终MSI文件。它也打包了那个目录,结果大小不断增加。

谢谢,Arun!


你是怎么做到的? - Franco
1
老实说,我记不清了,但在 package.json 中,我将 build.win.files 设置为一个数组,其中包括 "!**/dist"。可能是这个原因,但我不确定。 - Peter Jaric
是的,你是正确的。请看我发布的回答。 - Franco

0
你应该告诉 electron builder 只使用由 ng build --configuration production 生成的构建文件。
要做到这一点,在你的 package.json 中的 build 参数内使用 files 参数。
"files": [
        "!*.*",
        "!**/*",
        "dist/YourApp/**/*"
    ],
  • 第一个值排除了项目根目录中的所有文件
  • 第二个值排除了项目根目录中的所有子目录
  • 列表第三个值只包括您构建的代码

注意:当您同时针对32位和64位架构时,安装程序的大小将是仅针对1个架构的两倍。尽管在问题中,该人只针对一个架构,即“ia32”。 - Franco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接