javascript - 在 Electron 应用程序中管理应用程序设置

标签 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

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

问题出现在我打包应用程序(MSI、DMG 等)时。我正在使用 electron-builder为此目的的 package 。

config 包的问题是它在应用程序的当前工作目录中查找 config 文件夹,因为它没有在应用程序所在的文件夹中找到它安装,它只是抛出一个错误。我什至尝试手动将此文件夹复制到我的 app 文件夹(这是 electron-builder 制作软件包的地方),但这也无济于事。理想情况下,我想将应用程序设置捆绑在应用程序的 ASAR 文件中,这样它就无法被反编译。

我的问题是:

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

最佳答案

我没有使用 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;

然后我在我的应用程序中需要的任何地方都需要配置并使用这些值。现在这是一件简单的事情,也许没有您链接到的配置包的灵 active ,但它可以工作。

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

关于javascript - 在 Electron 应用程序中管理应用程序设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40146701/

相关文章:

异步函数中的Javascript 'New'对象的 'this'

javascript - 单击切换按钮时交换图像

javascript - NodeJs - 网络模块 - 使用二进制数据响应数据包

apache-flex - 如何将某些文件放在Grails服务器的根目录中?

java - 配置 Spring + Hibernate 事务管理器

Javascript 书籍免费下载

javascript - 从左到右两排光滑的旋转木马

javascript - 极坐标到笛卡尔坐标函数未输出正确的数据

javascript - Uglify 从 Browserify 捆绑的 JS

spring - <context :include-filter> and <context:exclude-filter> work in Spring? 怎么办