为不同的环境构建 Electron

Build Electron for different environments

嗨,

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

据我所知,可以有不同的构建文件 (https://github.com/electron-userland/electron-builder/issues/1109), but I can't quite figure how the setup should be, and furthermore I can't figure how to get the attributes from the build files (e.g. build/publish/url). It seems possible to get icon and name (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?
        }],
      }
    }

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

提前致谢

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

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

准备不同的配置 YAML 并在构建之前将它们复制到 electron-builder.yml,具体取决于您的平台或风格。

动态创建构建配置

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

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

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

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

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

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

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

我仍然相信 "correct" 方法是拥有多个 YAML 文件,就像 Rhayene 所建议的那样,但上面的方法似乎更容易,更直接控制。