为不同环境构建 Electron

Posted

技术标签:

【中文标题】为不同环境构建 Electron【英文标题】:Build Electron for different environments 【发布时间】:2020-05-22 06:32:51 【问题描述】:

喂,

我有一个电子应用程序,我目前在其中一个文件中手动编辑 URL,具体取决于我希望构建的环境(开发、产品、测试)。但是我宁愿在我的脚本中定义它,这样我就不必每次都重写 URL(例如 electron-builder -w --x64 --ia32 --test 或类似的东西)。

据我所知,可能有不同的构建文件 (https://github.com/electron-userland/electron-builder/issues/1109),但我不知道应该如何设置,而且我不知道如何从构建文件(例如构建/发布/url)。似乎可以获取图标和名称(https://github.com/electron-userland/electron-builder/issues/639),但不能获取 url?

package.json

    ... ,
      "build":
        ... ,
        "publish":[
          ... ,
          "url": "https://my.website.url" <--- Change on build and fetchable in code?
        ],
      
    

如果我遗漏了什么,我很抱歉 - 一旦我掌握了这个窍门,我会考虑在某个地方写一个明确的教程。

提前致谢

【问题讨论】:

【参考方案1】:

这些解决方案不是很优雅,但仍然可以提供帮助:

事先准备好不同的配置文件

根据您的平台或风格,在构建之前准备好不同的配置 YAML 并将它们复制到 electron-builder.yml

动态创建构建配置

这对于更复杂的设置效果更好:

准备一个 YAML 或其他内容,其中包含适用于每个平台的所有配置和一个模拟值(或将其留空)用于您要在构建时更改的那个。我为此使用 YAML 文件,因为我可以将其复制粘贴到 electron-builder.yml 以防万一我想要新的东西,但你最清楚自己需要什么。

在构建之前运行一个节点脚本:

可以选择从以前的版本中删除旧的electron-builder.yml(如果存在) 读取准备好的配置文件 用读取数据中的真实信息替换模拟值 将修改后的数据写入electron-builder.yml

您的 npm 脚本将看起来像 node prepareYml.js &amp;&amp; electron-builder

【讨论】:

【参考方案2】:

我找到了一个(虽然有点 hack'ish imo)解决方案,我现在将使用它。

我只是在构建脚本中添加了“--c.extraMetadata.productName=dev-”(并在构建脚本中添加了 test 而不是 dev),然后在我的代码中我会检查哪个环境已预先添加到构建,并相应地切换 URL。这种方法的好处是现在我还可以看到 .exe 文件指向的环境!

我仍然相信“正确”的方法是拥有多个 YAML 文件,就像 Rhayene 所建议的那样,但上述方法似乎更容易且更直接受控。

【讨论】:

以上是关于为不同环境构建 Electron的主要内容,如果未能解决你的问题,请参考以下文章

如何使用环境变量构建不同的版本

在 Electron 模式构建中为 Quasar 设置 API URL

使用electron构建跨平台Node.js桌面应用

Electron打包React构建桌面应用

Electron打包React构建桌面应用

为不同环境创建图像的最佳方法