为不同的环境构建 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 所建议的那样,但上面的方法似乎更容易,更直接控制。
嗨,
我有一个电子应用程序,我目前在其中一个文件中手动编辑 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 所建议的那样,但上面的方法似乎更容易,更直接控制。