Javascript 为不同的环境构建电子产品
啊, 我有一个electron应用程序,目前我在其中一个文件中手动编辑URL,具体取决于我希望构建的环境(开发、生产、测试)。但是,我更希望在脚本中定义它,这样我就不必每次都重写URL(例如,electron builder-w--x64--ia32--test或类似的东西) 就我所知,可以有不同的构建文件(),但我不太清楚应该如何设置,而且我也不清楚如何从构建文件(例如build/publish/url)中获取属性。似乎可以获取图标和名称(),但不能获取urlJavascript 为不同的环境构建电子产品,javascript,node.js,typescript,electron,electron-builder,Javascript,Node.js,Typescript,Electron,Electron Builder,啊, 我有一个electron应用程序,目前我在其中一个文件中手动编辑URL,具体取决于我希望构建的环境(开发、生产、测试)。但是,我更希望在脚本中定义它,这样我就不必每次都重写URL(例如,electron builder-w--x64--ia32--test或类似的东西) 就我所知,可以有不同的构建文件(),但我不太清楚应该如何设置,而且我也不清楚如何从构建文件(例如build/publish/url)中获取属性。似乎可以获取图标和名称(),但不能获取url package.json
package.json
{... ,
"build":{
... ,
"publish":[{
... ,
"url": "https://my.website.url" <--- Change on build and fetchable in code?
}],
}
}
package.json
{... ,
“构建”:{
... ,
“发布”:[{
... ,
“url”:”https://my.website.url“这些解决方案不是很优雅,但仍有助于:
事先准备不同的配置文件
根据您的平台或口味,在构建之前准备不同的配置YAML并将其复制到electron builder.yml
动态创建生成配置
这对于更复杂的设置更有效:
准备一个YAML或其他东西,其中包含对每个平台都为真的所有配置和一个模拟值(或将其留空)我使用一个YAML文件,因为我可以将它复制粘贴到electron builder.yml
中,以防我需要新的东西,但您最清楚自己需要什么
构建之前,请运行以下节点脚本:
- 如果存在,可以选择从以前的版本中删除旧的
electron builder.yml
- 读取准备好的配置文件
- 用读取数据中的真实信息替换模拟值
- 使用修改后的数据写入
electron builder.yml
然后,您的npm脚本将看起来像node prepareYml.js&&electron builder
我找到了一个(尽管在imo中有点黑客)解决方案,我现在将使用它
我只是简单地添加了“-c.extrametada.productName=dev-”(并为测试构建添加了test而不是dev)到构建脚本,然后在我的代码中,我会检查构建之前的环境,并相应地切换URL。这种方法的好处是,现在我还可以看到.exe文件指向的环境
我仍然相信“正确”的方法是拥有多个YAML文件,就像Rhayene所建议的那样,但是上面的方法似乎更容易和更直接地控制