在Electron应用程序中pipe理应用程序设置

我很想知道如何在Electron应用程序中pipe理应用程序设置 ? 我在这里发现了一些优秀的资源(例如, 在Electron(Atom Shell)应用程序中存储用户设置的地方)和其他地方,当涉及到pipe理用户设置但是找不到与pipe理应用程序设置相关的任何事情时。

对我来说,两者之间的区别在于应用程序设置可能因环境而异(开发/testing/生产),但对于应用程序的所有用户而言将保持不变。 他们将包含像API端点等东西。另一方面,用户设置会根据用户的喜好,如窗口宽度/高度等,从用户到用户。

我到目前为止做了什么?

我发现这个优秀的包称为config并开始在我的项目中使用它。 根据说明,我创build了一个config文件夹和一个默认的configuration文件(稍后我将创build特定于环境的configuration文件)。

在这里输入图像说明

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

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

config包的问题在于它在应用程序的当前工作目录中查找config文件夹,并且因为在安装应用程序的文件夹中找不到它,所以只会引发错误。 我什至试图手动复制这个文件夹在我的app文件夹(这是电子生成器使包),但也没有帮助。 理想情况下,我想要在应用程序的ASAR文件中捆绑应用程序设置,以便它不能被反编译。

我的问题是:

  • 人们如何pipe理Electron应用程序的应用程序设置?
  • 可以config NPM包用于那个? 或者是否有专门用于Electron应用程序的替代scheme?

我不使用npm软件包,但是我的方法与您提到的类似。 我有一个configuration目录与不同的环境下的不同的configuration文件:dev,test,prod。 然后在我的package.json中添加了特定于环境的构build命令。 例如对于prod:

 "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,并使用这些值。 这是一个简单的事情,也许没有你链接到的configuration包的灵活性,但它的工作原理。

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