2个版本
0.1.1 | 2023年7月11日 |
---|---|
0.1.0 | 2023年7月11日 |
#490 in 配置
9KB
155 行
Configuru
Configuru是一个配置管理库。它是一个JSON/JSONC配置加载器,是专为Node.js应用程序构建的AckeeCZ/configuru工具的克隆项目。
入门
- 安装
cargo add configuru
- 在您的项目根目录下创建
.env.jsonc
,添加默认值或占位符。
{
// Database secrets
"PASSWORD": "testtest",
// Sever secrets
"SERVER_HOST": "localhost",
"SERVER_PORT": 3000,
// Entities
"CUSTOMER": "{\"age\": 25, \"email\":\"[email protected]\"}" // customer related secrets
}
-
(可选) 作为开发者(或环境),创建自定义覆盖文件(例如
~/.env/my-project.jsonc
)并保存路径到您的CFG_JSON_PATH
。 -
用法
// Import dependencies
use serde_derive::Deserialize;
use configuru::{Loader, Hidden, configuru};
use serde_json;
// Define data structures you want to load from configuration file. Data types must match variables in configuration file.
#[derive(Debug, Deserialize)]
struct Customer {
email: String,
age: i64,
}
#[derive(Debug)]
struct Config {
port: i64,
host: String,
password: Hidden<String>,
customer: Customer,
}
// Implement a conversion from Loader to your Config
impl From<Loader> for Config {
fn from(loader: Loader) -> Self {
Config {
port: loader.i64("SERVER_PORT"),
host: loader.str("SERVER_HOST"),
password: loader.hidden().str("PASSWORD"),
customer: loader.custom("CUSTOMER", |str| serde_json::from_str(&str).unwrap()),
}
}
}
- 在您的应用程序中使用配置参数
fn main() {
// Usage how to load config
let config: Config = configuru(".env.jsonc");
println!("Example: {:?}", config) // Example: Config { port: 3000, host: "localhost", password: <redacted>, customer: Customer { email: "[email protected]", age: 25 } }
}
许可证
本项目受MIT许可证约束。
依赖项
~3–5MB
~89K SLoC