为不同环境构建 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 && electron-builder
。
【讨论】:
【参考方案2】:我找到了一个(虽然有点 hack'ish imo)解决方案,我现在将使用它。
我只是在构建脚本中添加了“--c.extraMetadata.productName=dev-”(并在构建脚本中添加了 test 而不是 dev),然后在我的代码中我会检查哪个环境已预先添加到构建,并相应地切换 URL。这种方法的好处是现在我还可以看到 .exe 文件指向的环境!
我仍然相信“正确”的方法是拥有多个 YAML 文件,就像 Rhayene 所建议的那样,但上述方法似乎更容易且更直接受控。
【讨论】:
以上是关于为不同环境构建 Electron的主要内容,如果未能解决你的问题,请参考以下文章