3个版本 (0个不稳定版本)
2.1.0-beta | 2023年8月20日 |
---|---|
2.0.0-beta | 2022年4月27日 |
1.0.0-beta | 2022年4月18日 |
#525 in 配置
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()
方法根据字符串路径检索配置文件中的值,路径由点 .
分隔。
定制
用户可以定制库的一些属性
- 将通过设置
CONFIG_LITE_ENV
环境变量来确定的配置环境,该变量决定了从哪个配置文件中读取。默认环境是default
。它期望配置目录中至少存在一个default.json
或default.yaml
配置文件 - 可以通过更改
CONFIG_LITE_DIRECTORY_NAME
环境变量来自定义配置目录名称。默认目录名称是config
,并期望在crate的根目录中定义
注意事项
必须将配置类型中的值映射到拥有类型,而不是共享类型。
许可证
此库根据MIT许可证发布。有关更多信息,请参阅LICENSE文件。
贡献
我仍然愿意在此基础上构建这个库,目前发布的是概念验证版本。如果您想为此项目贡献力量,请随意在 GitHub 仓库 上提交拉取请求或问题。
依赖项
~5.5–7.5MB
~138K SLoC