Javascript 为不同的环境构建电子产品

Javascript 为不同的环境构建电子产品,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

啊,

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

就我所知,可以有不同的构建文件(),但我不太清楚应该如何设置,而且我也不清楚如何从构建文件(例如build/publish/url)中获取属性。似乎可以获取图标和名称(),但不能获取url

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所建议的那样,但是上面的方法似乎更容易和更直接地控制