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工具的克隆项目。

入门

  1. 安装
cargo add configuru
  1. 在您的项目根目录下创建.env.jsonc,添加默认值或占位符。
{
  // Database secrets
  "PASSWORD": "testtest",
  // Sever secrets
  "SERVER_HOST": "localhost",
  "SERVER_PORT": 3000,
  // Entities
  "CUSTOMER": "{\"age\": 25, \"email\":\"[email protected]\"}" // customer related secrets
}
  1. (可选) 作为开发者(或环境),创建自定义覆盖文件(例如 ~/.env/my-project.jsonc)并保存路径到您的 CFG_JSON_PATH

  2. 用法

// 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()),
        }
    }
}
  1. 在您的应用程序中使用配置参数
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