@clevercloud/reglage

中文文档
0.0.8发布于 2026/11/07Apache-2.0TypeScriptES Module零依赖近 30 天下载 1.2万

Schema驱动配置库:从多个命名源定义,验证并合并配置与Zod schemas,再以安全方式回读,并带有秘密掩码和Markdown doc生成.

中文使用文档
文档目录6 节
  1. 使用量
  2. API 密码
  3. createConfigBuilder(schema)
  4. ConfigBuilder
  5. Config
  6. InvalidConfigError

@ cluvercloud/ reglage (英语)

Schema 驱动配置库 佐德语Name。定义您的选项一次,然后从任何来源获得验证、类型安全配置.

使用量

import { createConfigBuilder } from '@clevercloud/reglage';
import { z } from 'zod';

const builder = createConfigBuilder({
  API_URL: {
    schema: z.url().default('https://api.example.com'),
    documentation: 'The API base URL',
  },
  PORT: {
    schema: z.number().default(8080),
    tags: ['server'],
    documentation: 'Port to listen on',
  },
  SECRET: {
    schema: z.string().min(1),
    secret: true,
    documentation: 'A required secret',
  },
});

builder.addSource('defaults', { PORT: '3000' });
builder.addSource('env', process.env);

const config = builder.buildConfig(); // throws InvalidConfigError on validation failure

config.get('API_URL'); // string
config.get('PORT'); // number
config.getAll('server'); // { PORT: number }

API 密码

createConfigBuilder(schema)

创建一个 ConfigBuilder 从一个计划记录。 每个关键地图到一个 OptionDef数字 :

外地类型说明
schemaz.ZodTypeZod schema用来验证并转换生值.
secretboolean (可选)将值标为敏感值.
tagsstring[] (可选)分类选项的任意标签 .
documentationstring人可读取的选项描述.

ConfigBuilder

addSource(name, values)

注册一个已命名的密钥/值源(例如:. "env", (中文(简体) ), "file") (中文(简体) ). 源被按顺序合并——后源为同一密钥而凌驾于前源. 计划中没有的密钥被默默地忽略了.

buildConfig()

将所有源合并,并验证每个值与计划相对应。 回返a Config 实例或扔出 InvalidConfigError。 。 。 .

refine(key, fn)

为给定的密钥添加跨字段验证规则。 回调接收了原Zod schema和所有已解析的配置值,必须返回一个Zod schema以验证字段对齐. 多重改进可以注册(即使是在同一键上). 在所有栏目被单独验证后运行.

// Make SECRET required when FEATURE_X is enabled
builder.refine('SECRET', (schema, resolved) => {
  if (resolved.FEATURE_X) return z.string().min(1);
  return schema;
});

// Restrict PORT in production
builder.refine('PORT', (schema, resolved) => {
  if (resolved.MODE === 'production') {
    return schema.refine((v) => v >= 1024, { message: 'Must be >= 1024 in production' });
  }
  return schema;
});

Config

get(key)

返回单个密钥的解析值.

getAll(tag?)

返回所有已解析的值。 何时 tag 中仅包含标有该值的选项.

getSource(key)

返回为密钥提供中值的来源名称(例如:. "env", (中文(简体) ), "file"),或 "default" 如果值来自 Zod 计划默认值.

getSourceHistory(key)

返回单个密钥的全部覆盖历史, 命令从最早( schema 默认值) 到最近( 赢取源) 。 每个条目都是 SourceHistoryEntry数字 :

interface SourceHistoryEntry {
  source: string;
  rawValue: unknown;
  resolvedValue?: unknown; // only set on the last (winning) entry
}
builder.addSource('file', { PORT: 3000 });
builder.addSource('env', { PORT: '8080' });
const config = builder.buildConfig();

config.getSourceHistory('PORT');
// [
//   { source: 'default', rawValue: 80 },
//   { source: 'file', rawValue: 3000 },
//   { source: 'env', rawValue: '8080', resolvedValue: 8080 }
// ]

getAllSourceHistory()

返回所有密钥的全部历史, 作为绘制每个密钥的对象 SourceHistoryEntry[]。 。 。 .

toString(format?)

返回所有配置值的可读字符串。 隐藏秘密值 ******键按字母顺序排列.

  • "simple" (默认)——每键一行有中选来源:

    API_URL="https://api.example.com" (env)
    PORT=8080 (env)
    SECRET=****** (env)
    
  • "chain" – 每个键有完整源链的一行:

    API_URL="https://api.example.com" (default -> env)
    PORT=8080 (default -> file -> env)
    SECRET=****** (env)
    
  • "verbose" —— 多行输出, 显示每个源的原始值 <-- active 在中标条目上标记 :

    API_URL="https://api.example.com" (env)
      default -> "https://default.example.com"
      env     -> "https://api.example.com"  <-- active
    PORT=8080 (env)
      default -> 80
      file    -> 3000
      env     -> "8080"  <-- active
    SECRET=****** (env)
      default -> ******
      env     -> ******  <-- active
    

InvalidConfigError

验证失败时抛出 。 显示 a issues 数组 ConfigIssue 对象 :

interface ConfigIssue {
  key: string;
  source: string | undefined;
  message: string;
}

版本与发布记录

@clevercloud/reglage 共发布 6 个版本,首次发布于 2026/04/08;过去 12 个月发布了 6 个版本。

版本发布日期距今
0.0.8latest2026/11/073 天前
0.0.72026/11/073 天前
0.0.62026/04/216 个月前
0.0.52026/04/106 个月前
0.0.42026/04/087 个月前
0.0.22026/04/087 个月前

关于 @clevercloud/reglage 的常见问题

@clevercloud/reglage 是什么?

Schema驱动配置库:从多个命名源定义,验证并合并配置与Zod schemas,再以安全方式回读,并带有秘密掩码和Markdown doc生成.

如何安装 @clevercloud/reglage?

在项目目录运行 npm install @clevercloud/reglage,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:zod(^4)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@clevercloud/reglage 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@clevercloud/reglage 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@clevercloud/reglage 可以商用吗?

@clevercloud/reglage 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@clevercloud/reglage 的下载量有多少?

根据 npm 官方下载统计,@clevercloud/reglage 在 2026/10/10 – 2026/11/08 这 30 天内被下载 12,165 次,日均约 406 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@clevercloud/reglage 还在维护吗?

最新版本 0.0.8 发布于 2026/11/07(3 天前);至今共发布 6 个版本,其中过去 12 个月发布了 6 个;首次发布于 2026/04/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。