【问题标题】:Make electron app smaller?让电子应用程序更小?
【发布时间】:2018-04-28 21:17:18
【问题描述】:

我最近刚刚构建了一个电子应用程序,并使用电子打包器对其进行了打包。 .exe 文件为 55,000kb,文件夹的其余部分也相当庞大。有什么办法可以完全减小这个应用程序的大小?

【问题讨论】:

  • 即使你不能用铅笔杀死大小?

标签: electron


【解决方案1】:

这是一个github issue

我要强调的评论是:

这是预期的大小,没有办法让它变小。

之所以这么大,是因为电子在那个 50mb 的文件中加载了大部分铬。

所以没有遗憾的是没有办法让它变小抱歉。

【讨论】:

  • 现在是 100MB :)
  • 对我来说是 200M
【解决方案2】:

来自github thread 的一篇有帮助的帖子建议通过电子打包器删除不必要的节点模块。它还提供了更多关于文件为何如此大的解释。

您可以压缩您的应用程序,如果您使用的是 electron-packager,您可以忽略一些在应用程序运行时不需要的节点模块,这会使其更小一些。例如,我有一个 37MB 的压缩电子应用程序(注意 Windows 版本要大得多,因为它包含一个 Git 副本)。但是 Electron 中总会有很大一部分 Chrome,所以只能做这么多。 Electron 本身现在约为 33MB。

【讨论】:

    【解决方案3】:

    有一种方法可以大幅减少 Electron 的大小(最多 99%,具体取决于您的应用程序的大小),方法是使用每个操作系统中可用的本机浏览器,而不是加载 webkit。但是由于内置浏览器没有系统 API,您可以做的事情也将受到极大的限制。但是,如果您需要基本的 web ui 应用程序,这可能是最好的解决方案,但必须提到的是,它可能存在一些意想不到的问题,因为您需要在不同操作系统的浏览器上测试您的应用程序。

    我所说的方法可以在Put your Electron app on a diet with ElectrinoPauli Olavi Ojala 的精彩帖子中找到

    【讨论】:

    • 你为什么不直接使用 html+cs+js 组合(除非你想隐藏你的代码)?我已经阅读了这篇文章,它说它缺少特定于 Electron 的 API - 所以我猜你不能与你的操作系统交互(保存/读取文件)等。所以你的文章建议使用更难使用的东西而没有它的好处(便携性,与操作系统)。
    【解决方案4】:

    如果您使用的是 Electron Builder https://www.electron.build,您应该使用列出的各种方法来删除特定平台的文件和文件夹。

    例子

    {
        "name": "Example",
        "version": "1.1.2",
        "description": "",
        "main": "main.js",
        "scripts": {},
        "build": {
            "appId": "com.example",
            "afterSign": "notarize.js",
            "fileAssociations": [{
                "ext": [
                    "mp4"
                ],
                "name": "Media File",
                "role": "Viewer"
            }],
            "dmg": {
                "sign": true
            },
            "mac": {
                "hardenedRuntime": true,
                "gatekeeperAssess": false,
                "entitlements": "build/entitlements.mac.plist",
                "entitlementsInherit": "build/entitlements.mac.plist",
                "icon": "build/icon.png",
                "category": "public.app-category.video",
                "extraFiles": [{
                        "from": "resources/bin/mac",
                        "to": "Resources/bin/mac",
                        "filter": [
                            "**/*"
                        ]
                    },
                    {
                        "from": "node_modules/platforms/darwin-x64/bin",
                        "to": "Resources/bin/mac",
                        "filter": [
                            "**/*"
                        ]
                    }
                ],
                "files": [
                    "!gruntfile.js",
                    "!README.md",
                    "!notarize.js",
                    "!.env",
                    "!minify.js",
                    "!src/*",
                    "!.git/*",
                    "!resources/*"
                ]
            },
            "win": {
                "target": "nsis",
                "signingHashAlgorithms": [
                    "sha1"
                ],
                "certificateFile": "",
                "certificatePassword": "",
                "files": [
                    "!gruntfile.js",
                    "!README.md",
                    "!notarize.js",
                    "!.env",
                    "!minify.js",
                    "!.git/*",
                    "!resources/mac/*"
                ]
            }
        },
        "author": "Example",
        "license": "ISC",
        "devDependencies": {
    
        },
        "dependencies": {
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-30
      • 2020-04-04
      • 2021-07-08
      • 2019-04-29
      • 1970-01-01
      • 2020-11-10
      • 2018-05-31
      • 2019-12-14
      相关资源
      最近更新 更多