前言
在开发前端应用时,我们通常需要在代码中添加敏感信息,如 API 密钥、数据库密码等,这些信息不能直接暴露在源码中,因此需要将这些敏感信息写在配置文件中,并通过环境变量加载进来。在 Node.js 中,我们可以使用 dotenv 包来实现这个目的。不过,dotenv 的语法较为简单,不能满足一些特殊需求,这时候就需要一个更强大的 dotenv 包——meri-dotenv。
meri-dotenv 是什么?
meri-dotenv 是一个支持文件和目录归并和基于环境变量的配置解析器,它通过读取指定路径下的配置文件,并将其中的环境变量加载到 process.env 对象中。与 dotenv 不同的是,meri-dotenv 支持对配置文件进行归并,支持将多个配置文件归并为一个配置文件。同时,meri-dotenv 还支持将配置文件归并到一个名为全局的环境变量集合中。
meri-dotenv 的安装
您可以通过 npm 包管理器安装 meri-dotenv,执行以下命令:
npm install meri-dotenv
如何使用 meri-dotenv?
在使用 meri-dotenv 前,您需要创建配置文件并将其中的敏感信息写在文件中,在配置文件中您可以使用 $VARIABLE
或者 ${VARIABLE}
这样的语法来引用环境变量,例如:
DB_HOST=localhost DB_PORT=5432 DB_USER=user DB_PASSWORD=pass
在获得配置文件后,您可以使用 meri-dotenv 包的 load 方法来加载配置文件,并将其中的环境变量添加到 process.env 对象中。该方法的使用方法如下:
const { load } = require('meri-dotenv') const { error } = load(<path>, <options>)
其中,<path>
参数是您配置文件的路径,可以是一个文件或一组文件的目录,<options>
是一个可选的对象,可以配置 load 方法的行为。load 方法会返回一个对象,其中包含 error
和 env
两个属性。
error
属性是一个 Error 对象,表示如果在加载配置文件时发生错误,则提供错误信息;env
属性是包含环境变量的对象。
load 方法的 options 参数
options
参数是一个对象,包含了一系列配置参数,用来定制 meri-dotenv 的行为。以下是 options 参数的可选项:
encoding
- 类型:string
- 默认值:'utf8'
用于读取和写入配置文件的编码。
merge
- 类型:boolean
- 默认值:false
是否将多个配置文件归并到一个文件中,如果传入该参数,则 meri-dotenv 将读取目录下的所有文件,并将它们的内容归并到一个配置文件中,任何同名的变量都将被后来的变量所覆盖。
safe
- 类型:boolean
- 默认值:false
是否禁用不存在的文件错误,如果开启,将跳过不存在的文件而不是抛出错误。
allowEmptyValues
- 类型:boolean
- 默认值:false
是否允许空值作为环境变量的值,如果关闭,将抛出一个异常。
meri-dotenv 的示例代码
以下是一个基本的示例代码,其中我们使用了默认的配置参数,只传入了配置文件的路径:
-- -------------------- ---- ------- ----- - ---- - - ---------------------- ----- - ------ --- - - --------------------- -- ------- - -------------------- --------------- - ------------------------ -- --------- ------------------------ -- ---- ------------------------ -- ---- ---------------------------- -- ----
在上述示例中,我们首先通过 load 方法加载了配置文件,如果加载出错,则打印错误信息并退出应用程序,否则将其中的环境变量输出到控制台。
以下是一个更为复杂的示例代码,其中使用了所有可选的配置参数:
-- -------------------- ---- ------- ----- - ---- - - ---------------------- ----- - ------ --- - - ---------------- - ------ ----- ----- ------ ----------------- ----- --------- ------ -- -- ------- - -------------------- --------------- - ------------------------ -- --------- ------------------------ -- ---- ------------------------ -- ---- ---------------------------- -- ---- ------------------------ -- ----- --------------------------- -- -----
在上述示例中,我们向 load 方法传入了所有的可选参数,其中 merge: true
表示将所有配置文件归并到一个文件中,safe: false
表示禁用不存在的文件错误,allowEmptyValues: true
表示允许环境变量的值为空,encoding: 'utf8'
表示使用 utf8 编码读取和写入配置文件。这样,我们可以在输出环境变量时获取配置文件中所有的键值对。
参考文献
- 官方文档: https://www.npmjs.com/package/meri-dotenv
- GitHub 仓库:https://github.com/florianheinemann/meri-dotenv
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066f3e1d8e776d08040b3c