介绍
@kauabunga/convict 是一种 Node.js 应用程序的配置管理工具。它提供了易于使用的 API 来定义配置架构,并支持从多个源读取和解析配置数据。
此外,@kauabunga/convict 还提供了一些其他有用的功能,例如验证,类型转换和默认值。
安装
您可以使用 npm 命令安装 @kauabunga/convict:
npm install @kauabunga/convict
基础使用
在开始使用 @kauabunga/convict 之前,您需要定义一个配置架构。以下是一个基本示例:
-- -------------------- ---- ------- ----- ------- - ------------------------------ ----- ------ - - --- - ---- - -------- ------------ ---- --------------- -- ----- - -------- ------ ------- ------- ---- ---------------- -- -- -- ----- ------ - ---------------- ----------------- -------- -------- --- ---------------------------------- -- ----------- ----------------------------------- -- -----
该示例定义了一个名为 db
的配置模块,其中包含有关数据库的信息。其中包括数据库主机名(默认为 localhost)和端口号(默认为 27017)。
高级用法
从多个源读取配置
通过配置 @kauabunga/convict 可以从多个源读取和解析配置数据。这些源包括以下内容:
- 命令行参数
- 环境变量
- 配置文件
您可以使用 load()
方法在不同的源之间定义优先级。例如,以下是一个示例:
-- -------------------- ---- ------- ----- ------ - --------------- ------- ----- -------------- ---- -------------- ---- --------- -- ------- ----- ------------------- ---- ------------- ---
在此示例中,首先从 config.json 文件中读取配置(如果该文件存在)并解析为 JSON。然后,它检查名为 development
的环境变量中是否有可用配置,并从该环境变量中读取任何键/值对覆盖 config.json 文件中的对应值。
最后,它检查是否在命令行中提供了 --config <file> 参数,如果是,则会从该文件中读取配置。如果没有提供参数,则默认情况下将从 config.json 或 development 环境变量中读取配置。
请注意,使用 load()
方法时必须按优先级顺序使用它们。在示例中,config.json 文件中的值始终优先于 development 环境变量中的值,并且命令行参数优先于所有其他值。
验证配置
@kauabunga/convict 还可以验证配置是否正确,以及它是否包含所需的键。以下是一个示例:
-- -------------------- ---- ------- ----- ------ - - --- - ---- - ------- ------ ---- --------------- -------- ------------ -- ----- - ------- ------- ---- ---------------- -------- ------ -- -- -- ----- ------ - ---------------- ----------------- -------- -------- ---
在此示例中,使用 validate()
方法验证了当前配置。allowed: "strict"
表示仅允许配置中定义的键和模块。
如果配置中缺少必需的键或格式不正确,则验证将失败并引发异常。
自定义类型和格式
@kauabunga/convict 允许您自定义特定于域的数据类型和格式。这对于与其他系统集成时,需要将值格式化为特定的形式特别有用。以下是一个示例:
-- -------------------- ---- ------- ------------------- ----- ----------- --------- ----- -- - -- ------------------------------------------------------------ - ----- --- ----------- -- - ------- ---- ------------------------------- - -- ------- ----- -- - ------ ---- -- --- ----- ------ - - --- - ---- - ------- ----------- -------- --------------------------------------- -- -- -- ----- ------ - ---------------- ----------------- -------- -------- --- ---------------------------------- -- --------------------------------------
在此示例中,定义了一种名为 mongoUrl
的新格式。该格式验证一个值是否是有效的 MongoDB 连接字符串,如果不是,则引发错误。
此外,还定义了第二个回调函数 coerce()
,用于在值被设置或取出时自动将值转换为正确的类型。
然后,为数据库的 url
属性定义了此新格式,以便在配置中使用。如果使用任何不符合格式的值,则 validate()
方法将引发异常。
总结
本文介绍了如何使用 @kauabunga/convict 对 Node.js 应用程序的配置进行管理。通过定义配置架构以及从多个源读取和验证配置数据,您可以轻松地创建可扩展的应用程序,并使其对配置更加灵活。
此外,我们还了解了如何自定义数据类型,以便应用程序与其他系统集成。这种灵活性使得 @kauabunga/convict 成为 Node.js 应用程序中必不可少的工具。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066bc6967216659e244413