@dokebi/config

中文文档
0.4.5发布于 2026/11/05MITTypeScriptES Module近 30 天下载 2990

为多克比应用程序验证的不可变YAML配置.

中文使用文档
文档目录3 节
  1. 配置文件
  2. 明确装入
  3. 检查和限制

@dokebi/ 配置

版本0.4.2(未发表). 它被自动安装为@dokebi/core所需的依赖. 你从不打电话 app.register 用于它;它加载和检查YAML并准备每个应用程序的只读配置. 它不创建 DB, Redis 或 NATS 连接.

配置文件

运行时间配置为单多克比. 说吧 schemaVersion: 1 还有一个 options 对象。 应用程序和插件的设置 options 通过核心读取 app.config。例如 options.redis.connections.cache 财务报告和审定财务报表 options.redis.connections.coordination 将两个独立连接的设置分开。 每个插件的图案和运行时间合同检查实际连接名称,引用和需要的值.

将真实文件保存出Git,只共享一个dokebi.example. 没有秘密。 没有环境可变的替代,也没有文件合并,而示例文件从不取代真实配置. 在应用程序运行时再次读取文件是核心的配置重装(D-0154),其读取时使用 readConfigFile 作为 loadConfig 已经.

明确装入

import { Application, loadConfig } from "@dokebi/core";

const document = await loadConfig("dokebi.yaml");
const app = new Application({ config: document.options });
await app.start();
try {
  app.logger.log("info", "Application started");
} finally {
  await app.stop();
}

loadConfig(path, guard?) 返回时 Promise<ConfigDocument<T>>,以及 parseConfig(text, guard?) 返回没有文件 I/O 的同一文档。 可选类型守护检查真实形状 options 然后让 TypeScript 推断类型。 您不能只给出类型参数来跳过检查 。 构造 Application 从不搜索当前文件夹或读取文件。 构型在构建后和停止后都是可以读取的,它从后来对输入对象的修改和其他应用程序中被隔离出.

工厂的 app 编辑 context.app 设置/启动相同 ApplicationView。每个应用程序创建一次、被冻结和提供 state, (中文(简体) ), config, (中文(简体) ), logger 财务报告和审定财务报表 runtime它没有开始,停止,注册或得到。 插件从 app.config[<plugin name>]。 。 。 .

检查和限制

YAML仅限于一个1.2文档,1 MiB,深度64和10,000个节点. 复制密钥、锚、别名、明确标记、合并密钥和 __proto__ 拒绝; 普通 constructor 财务报告和审定财务报表 prototype 允许按键。 允许有限定数字,但整数必须是JavaScript安全整数(-900719254740991至9007199254740991). 将较大的标识符写入引用字符串 .

程序输入的大小是将UTF-8的字符串和密钥长度相加,每个节点成本相加的预算;它与文件的原始字节限制不同. 通过文件限制并不意味着一个插件的设置对于其目的是有效的.

ConfigValidator是因为 check(schema, options) 返回错误数组,并 validate(schema, options) 掷出 ConfigError 数据不匹配。 它使用JSON Schema 2020-12对象,有128个KiB限制,严格模式,没有外部引用或Async schemas. 它从不强制类型,注射默认或去除额外字段. parseSchema(text) 财务报告和审定财务报表 loadSchema(path) 读取计划。 无效的计划失败 check 我也一样. ConfigValidator({ allErrors?: boolean }) 默认为虚假.

ConfigError 已经 code, (中文(简体) ), line, (中文(简体) ), column, (中文(简体) ), issues, (中文(简体) ), plugin (单位:千美元)'dokebi-config'和 fix. 代码是 CONFIG READ FAILED, CONFIG Limit EXED, INVALID YAML, INVALID CONFIG, INVALID OPTIONS SCHEMA和INVALID CONFIG OPTIONS. 诊断从不包含原始值;原始原因只保留在它没有配置值的地方(CONFIG_READ_FAILED: 文件系统错误; INVALID_OPTIONS_SCHEMA计划问题; INVALID_YAML 从YAML 库中取出:仅其名称和代码). 错误不是YAML的错,而是按原样扔出. issues 仅持有 instancePath 财务报告和审定财务报表 keyword附加时 missingProperty (一个来自 schema 的字段名, 绝不是一个用户值) for required 错误。 永远不要将整个配置对象打印到日志中:它可以暴露出秘密.

它使用haml 2.9.1(ISC)和Ajv 8.2.0. 这个包是麻省理工学院许可的,并不依赖于核心. 见 大赦国际指南 编辑 配置设计注释 在仓库.

版本与发布记录

@dokebi/config 共发布 10 个版本,首次发布于 2026/10/14;过去 12 个月发布了 10 个版本。

版本发布日期距今
0.4.5latest2026/11/058 天前
0.4.42026/11/0211 天前
0.4.32026/11/0112 天前
0.4.22026/10/3113 天前
0.4.12026/10/1628 天前
0.4.02026/10/1628 天前

关于 @dokebi/config 的常见问题

@dokebi/config 是什么?

为多克比应用程序验证的不可变YAML配置.

如何安装 @dokebi/config?

在项目目录运行 npm install @dokebi/config,或使用 pnpm add / yarn add / bun add。

@dokebi/config 支持 TypeScript 吗?

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

@dokebi/config 支持 ESM 还是 CommonJS?

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

@dokebi/config 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@dokebi/config 可以商用吗?

@dokebi/config 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@dokebi/config 的下载量有多少?

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

@dokebi/config 还在维护吗?

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