npm 包 optional-conf 使用教程

简介

Optional-conf 是一个用于处理 Node.js 程序配置的 npm 包。它可以帮助开发者更加方便地管理项目的配置信息,支持从多种来源获取配置,例如从环境变量、命令行参数、配置文件中读取信息,并且支持校验和转换配置项数据类型。

安装

使用 npm 进行安装:

--- ------- -------------

安装完成后,在项目中引入 optional-conf:

----- ------------ - -------------------------

使用

使用 optional-conf 的第一步是定义配置项,在 optional-conf 中,一个配置项可以由四部分构成:

  • key: 配置项的名称,可以是任何字符串。
  • cli: 从命令行读入这个配置项的方式,默认是没有的,表示从命令行参数中不读入这个配置项的值。
  • env: 从环境变量读入这个配置项的方式,默认是没有的,表示从环境变量中不读入这个配置项的值。
  • default: 配置项的默认值,默认是没有的,表示如果命令行参数和环境变量中都没有这个配置项的值,那么就使用这个默认值。

下面的代码展示了如何定义一个配置项:

----- ------ - --------------
  -
    ---- ----------
    ---- -------
    ---- ----------
    -------- ------
  --
  -
    ---- --------------
    ---- -----------
    ---- -------------
  -
---

在上面的代码中,我们定义了两个配置项,db_userdb_password,其中 db_user 这个配置项可以从命令行参数(使用 --user 参数传入)或者环境变量(使用 DB_USER 变量传入)中读取。如果这两个地方都没有找到 db_user 这个配置项,那么就使用默认值 root

获取配置值

在定义了配置项之后,就可以使用 config() 函数获取这些配置项的值了。调用 config() 函数会返回一个对象,这个对象包含了所有存在的配置项的值。

下面的代码中展示了如何使用 config() 函数获取配置项的值,并把这些配置项的值打印出来:

----- ------ - --------------
  -
    ---- ----------
    ---- -------
    ---- ----------
    -------- ------
  --
  -
    ---- --------------
    ---- -----------
    ---- -------------
  -
---

----------------------

如果以上代码运行成功,它会打印出如下信息:

- -------- ------ -

这表示只有 db_user 这个配置项的值被成功获取,并且它的值是默认值 root

校验和转换值

optional-conf 还提供了校验和转换配置项的值的功能。当定义配置项时,可以指定校验或转换的函数,这些函数会在获取配置项时自动执行。

下面的代码定义了两个配置项,portlog_level。其中 port 的值必须是一个数字,并且不能小于 1000 或者大于 9999。而 log_level 的值必须是字符串 'debug''info''warn''error' 中的一个。

----- ------ - --------------
  -
    ---- -------
    ---- -------
    ---- -------
    -------- -----
    --------- ------- -- ----------------------- -- ----- -- ---- -- ----- -- ----
  --
  -
    ---- ------------
    ---- ------------
    -------- -------
    ---------- ------- -- --------------------
    --------- ------- -- --------- ------- ------- ------------------------
  -
---

在这个例子中,我们看到了两个新的配置项属性:validatetransformvalidate 属性接收一个函数作为参数,这个函数会在获取值时进行校验。如果校验函数返回 false,那么获取配置项值的过程会被停止,并且返回 undefined。而 transform 属性接收一个函数作为参数,这个函数会在获取值之后对其进行转换。

下面的代码演示了如何使用校验和转换函数:

----- ------ - --------------
  -
    ---- -------
    ---- -------
    ---- -------
    -------- -----
    --------- ------- -- ----------------------- -- ----- -- ---- -- ----- -- ----
  --
  -
    ---- ------------
    ---- ------------
    -------- -------
    ---------- ------- -- --------------------
    --------- ------- -- --------- ------- ------- ------------------------
  -
---

----- - ----- --------- - - ---------
------------------ ---- ----------
-------------------- ------ ---------------

在以上代码运行成功后,它会打印出如下结果:

----- ---- ----
------- ------ ----

优先级

在获取配置项的值时,optional-conf 会按照以下优先级顺序去查找配置项的值:

  1. 命令行参数(如果存在)
  2. 环境变量(如果存在)
  3. 默认值

在优先级顺序中,如果前面的步骤找到了值,那么后面的步骤会被跳过。这表示如果命令行参数和环境变量中都存在某个配置项的值,那么使用的就是命令行参数中的值。

示例

下面的代码演示了如何使用 optional-conf 编写一个 HTTP 服务器。在这个例子中,我们使用了上文提到的全部特性:

----- ---- - ----------------
----- ------------ - -------------------------

-- -----
----- ------ - --------------
  -
    ---- -------
    ---- -------
    ---- -------
    -------- -----
    --------- ------- -- ----------------------- -- ----- -- ---- -- ----- -- ----
  --
  -
    ---- ------------
    ---- ------------
    -------- -------
    ---------- ------- -- --------------------
    --------- ------- -- --------- ------- ------- ------------------------
  -
---

-- -------
----- - ----- --------- - - ---------

-- -- ---- ---
----- ------ - ----------------------- ---- -- -
  ------------------ - --------------- ------------ ---
  -------------- ----------
---

-- -----
------------------- -- -- -
  ------------------- --------- -- ---- ----------
  -------------------- ------ ---------------
---

在运行以上代码时,可以使用 --port 参数指定服务器监听的端口,使用 LOG_LEVEL 环境变量指定日志级别,如下所示:

---- --------- ------ ----
--------------- ---- ---------

在运行成功后,服务器会监听 8081 端口,并且日志级别为 debug。

结论

使用 optional-conf 可以帮助开发者更加方便地管理配置信息,提高开发效率。通过校验和转换函数,可防止配置项值的错误输入,提高代码健壮性。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/600575c381e8991b448ea729


猜你喜欢

  • npm 包 @coderbox/ui 使用教程

    随着前端技术的发展,各种 UI 库和组件库层出不穷,自主开发 UI 组件对于项目开发来说已经是非常低效的选择了。因此,使用第三方的 UI 库和组件库已经成为了前端开发必要的选项。

    3 年前
  • npm 包 tornado-weather 使用教程

    随着互联网的发展,天气信息已成为人们工作和生活必备的一部分。而 tornado-weather 这一 npm 包则是一个用于获取天气信息的 JavaScript 库,其使用简便且功能强大,本文将详细介...

    3 年前
  • npm 包 url-pattern-match 使用教程

    在前端开发中,经常需要对 URL 进行匹配、解析和处理。这时候,一个方便易用的工具就能大大提高我们的工作效率。在这方面,npm 包 url-pattern-match 就是一个不错的选择。

    3 年前
  • npm 包 @neuelabs/input 使用教程

    前言 在前端开发中,表单是我们经常需要处理的一种元素。而表单的核心是 input 元素。在我们使用 input 元素时,为了方便快捷,我们通常会使用第三方工具,比如 @neuelabs/input 这...

    3 年前
  • npm 包 mirri 使用教程

    在前端开发中,我们经常需要使用各种npm包来实现一些功能。在本篇文章中,我们将介绍一个非常实用的npm包,叫做mirri。本文将详细介绍如何使用该包以及其在前端开发中的应用。

    3 年前
  • npm 包 react-localizeit 使用教程

    在国际化的开发中,语言与国家的差异性,一般需要设置多种语言,以实现多语言的支持。为了提高本地化翻译的效率,我们可以使用 npm 包 react-localizeit。

    3 年前
  • NPM 包 shell-menu 使用教程

    在前端开发中,我们通常会需要使用到命令行工具来进行一些操作,而 shell-menu 就是一个帮助我们创建交互式命令行菜单的 Node.js 模块。本文将详细介绍 shell-menu 的使用方法,以...

    3 年前
  • npm 包 react-native-cm-custom-scrollview 使用教程

    简介 react-native-cm-custom-scrollview 是一款 React Native 的自定义滑动组件,可以轻松实现多种滚动效果和自定义样式,具有高度的灵活和自适应性。

    3 年前
  • npm 包 remove-prefix 使用教程

    简介 在前端开发中,我们时常会用到 NPM 包,NPM 包通常会包含大量的依赖和文件,而有时候我们并不需要所有这些依赖和文件,部分文件甚至还带有前缀,对于这种情况,我们可以使用 NPM 包 remov...

    3 年前
  • npm 包 secure-store 使用教程

    简介 secure-store 是一个基于 Node.js 的轻量级轻量级本地存储库,提供了一种更加安全和可靠的方法,用于在本地存储应用程序需要的数据,比如 API 密钥,密码等。

    3 年前
  • npm 包 react-native-page-creator 使用教程

    介绍 react-native-page-creator 是一款用于快速创建 React Native 页面的 npm 包。通过这个包,你可以省去大量的手动编写组件代码,只需简单配置,就可以生成美观、...

    3 年前
  • npm 包 remove-suffix 使用教程

    如果你正在开发前端应用程序,你可能会遇到需要移除字符串结尾的情况(例如,从 URL 中移除 ".html" 后缀)。在这种情况下,remove-suffix 可能是你该使用的 npm 包。

    3 年前
  • npm 包 git-swap 使用教程

    简介 git-swap 是一个 npm 包,它的作用是将 git 仓库中的文件内容进行批量替换。通过 git-swap,我们可以轻松地将文本文件中的某些内容替换为其他文本。

    3 年前
  • npm包 life-commit 使用教程

    前言 在前端开发中,我们经常会使用版本管理工具来保证代码的可控性和迭代管理,其中最常用的就是git工具。但是,在我们的开发过程中,有时候我们可能会忘记在适当的时间对代码进行提交,从而导致在遇到一些困难...

    3 年前
  • npm 包 swarmcity_installer 使用教程

    在前端开发中,管理依赖是一个非常重要的工作。Npm 是一个流行的 JavaScript 包管理器,它使得管理依赖包变得更加简单和高效。在本篇文章中,我们将介绍 npm 包 swarmcity_inst...

    3 年前
  • npm 包 rbinarysearch 使用教程

    什么是 rbinarysearch? rbinarysearch 是一个用于 JavaScript 的 npm 包,它提供了二分查找算法的实现。二分查找算法是一种高效的查找算法,它能够在一个有序数组中...

    3 年前
  • npm包bancor-api-node的使用教程

    介绍 bancor-api-node是一个npm包,它提供了一组用于查询Bancor智能合约的API功能。Bancor是一种去中心化的交易协议,它在以太坊上实现了自动市场制造商(AMM),让用户可以进...

    3 年前
  • npm 包 blessed-vue 使用教程

    介绍 在 Web 开发中,我们常常需要根据后端返回的数据动态生成页面。blessed-vue 是一个基于 Vue.js 的轻量级命令行界面库,能够在命令行中渲染复杂的 UI 组件和布局,支持键盘事件和...

    3 年前
  • npm 包 cron-store-core 使用教程

    前言 在前端开发的过程中,我们经常需要处理定时任务,比如每分钟更新一次数据。为了实现这个功能,我们可以使用一个叫做 cron 的定时器,但是每次都手动写配置文件比较麻烦,需要一些工具来帮助我们简化这个...

    3 年前
  • npm 包 bcoin-primitives 使用教程

    在前端开发领域中,我们有许多 npm 依赖包可用于处理不同的任务。其中一个非常有用的 npm 包是 bcoin-primitives,它提供了一组常见的比特币原语,例如交易输入输出、脚本等。

    3 年前

相关推荐

    暂无文章