#config-file #configuration-management #config-parser #yaml-config #configuration #env-var

config_lite

适用于二进制crate的轻量级和可定制的配置管理库

3个版本 (0个不稳定版本)

2.1.0-beta2023年8月20日
2.0.0-beta2022年4月27日
1.0.0-beta2022年4月18日

#525 in 配置

MIT 许可证

12KB
210

config_lite

这是一个轻量级和可定制的Rust库,提供简单的配置文件解析器,可以读取JSON和YAML文件,以及引用配置文件中定义的环境变量。

它定义了一个Config结构体,表示配置文件,并提供初始化和从中检索值的方法。

node config 启发

安装

您可以通过在Cargo.toml文件中添加以下内容将此库添加到您的项目中

[dependencies]
config_lite = "2.1.0-beta"

用法

要使用Config结构体,您可以按照以下方式导入它并调用其方法,以下配置json文件位于项目根目录下的 config/default.json

{
  "foo": "bar",
  "test": {
   "user": {
      "id": 1,
      "name": "Foo Baz",
      "screen_name": "foo_baz",
      "isActive": true
    }
  },
  "database": {
    "password": "{{DATABASE_PASSWORD}}" // config will read this value from the env var $DATABASE_PASSWORD
  }
}
use config::Config;
use serde::Deserialize;

#[derive(Deserialize, Debug)]
struct User {
  id: u32,
  name: String,
  screen_name: String,
  #[serde(rename(deserialize = "isActive"))]
  is_active: bool,
}

let config = Config::init()?;

let value = config.get::<String>("foo")?;
let user = config.get::<User>("test.user")?;
let database_password = config.get::<String>("database.password")?;

init() 方法通过在文件系统中搜索配置文件并读取其内容来初始化Config对象。

get() 方法根据字符串路径检索配置文件中的值,路径由点 . 分隔。

定制

用户可以定制库的一些属性

  1. 将通过设置 CONFIG_LITE_ENV 环境变量来确定的配置环境,该变量决定了从哪个配置文件中读取。默认环境是 default。它期望配置目录中至少存在一个 default.jsondefault.yaml 配置文件
  2. 可以通过更改 CONFIG_LITE_DIRECTORY_NAME 环境变量来自定义配置目录名称。默认目录名称是 config,并期望在crate的根目录中定义

注意事项

必须将配置类型中的值映射到拥有类型,而不是共享类型。

许可证

此库根据MIT许可证发布。有关更多信息,请参阅LICENSE文件。

贡献

我仍然愿意在此基础上构建这个库,目前发布的是概念验证版本。如果您想为此项目贡献力量,请随意在 GitHub 仓库 上提交拉取请求或问题。

依赖项

~5.5–7.5MB
~138K SLoC