npm 包 @kauabunga/convict 使用教程

阅读时长 6 分钟读完

介绍

@kauabunga/convict 是一种 Node.js 应用程序的配置管理工具。它提供了易于使用的 API 来定义配置架构,并支持从多个源读取和解析配置数据。

此外,@kauabunga/convict 还提供了一些其他有用的功能,例如验证,类型转换和默认值。

安装

您可以使用 npm 命令安装 @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

纠错
反馈