管理Electron应用程序中的应用程序设置

时间:2016-10-20 06:11:07

标签: javascript node.js configuration electron electron-builder

我很想知道如何在Electron应用程序中管理应用程序设置?我在这里找到了一些优秀的资源(例如Where to store user settings in Electron (Atom Shell) Application?)以及管理用户设置但找不到与管理应用程序设置相关的任何内容。

对我而言,两者之间的区别在于应用程序设置可能因环境而异(开发/测试/生产),但对于应用程序的所有用户而言将保持不变。它们将包含API端点等内容。另一方面,用户设置会根据窗口宽度/高度等偏好从用户更改为用户。

到目前为止我做了什么?

我找到了这个名为config的优秀软件包,并开始在我的项目中使用它。根据说明,我创建了一个config文件夹和一个默认配置文件(稍后我将创建特定于环境的配置文件)。

enter image description here

只要我正在开发应用程序,它就可以正常工作。应用程序正在从default.json文件夹中正确获取config文件,并正确应用这些设置。

当我打包应用程序(MSI,DMG等)时出现问题。我正在使用electron-builder包。

config包的问题是它在应用程序的当前工作目录中查找config文件夹,并且因为它没有在安装应用程序的文件夹中找到它,它只是抛出一个错误。我甚至试图在我的app文件夹中手动复制这个文件夹(这是电子制造商制作软件包的地方),但这也无济于事。理想情况下,我想将应用程序设置捆绑在应用程序的ASAR文件中,以便无法对其进行反编译。

我的问题是:

  • 人们如何管理Electron应用程序的应用程序设置?
  • 可以使用config NPM包吗?或者是否有专门针对Electron应用的替代方案?

1 个答案:

答案 0 :(得分:1)

我没有使用npm包,但我的方法类似于你提到的方法。我有一个配置目录,其中包含不同环境的不同配置文件:dev,test,prod。然后在我的package.json中添加了特定于环境的构建命令。例如对于刺激:

"build-prod-config": "config/buildProdConfig.sh",
"build-renderer-prod": "webpack --config=webpack.config.renderer.prod.js",
"build-main-prod": "webpack --config=webpack.config.main.prod.js",
"build-prod": "npm run build-prod-config && npm run build-main-prod & npm run build-renderer-prod",

buildProdConfig.sh
#!/usr/bin/env bash

cp config/app.config.prod.js config/app.config.js
echo "Copied ProdConfig to Config"

//This is what a config file looks like
const Config = {
  suppDataDirectoryPath: '/suppData/',
  builtFor: 'prod',
}

module.exports = Config;

然后,我需要在我的应用程序中使用Config并使用这些值。这是一个简单的事情,也许并没有你所链接的配置包的灵活性,但它的工作原理。

另外,另一个重要的事情是我没有将我的应用程序打包到ASAR存档中,但我认为我的方法仍然可行,因为我使用webpack将所有内容打包到一个包中。