简介
env-settings 是一个在 Node.js 应用中帮助您轻松管理环境变量的 npm 包。通过将环境变量自动加载到 Node.js 应用的配置中,您可以在不同的环境中进行轻松的部署,例如开发、生产和测试。
安装
安装 env-settings 只需要几个简单的步骤:
npm install env-settings
如何使用
使用 env-settings 分为两个步骤:
第一步:设置环境变量
在您的系统环境变量中设置需要使用的参数,例如:
DB_HOST=localhost DB_USER=myuser DB_PASSWORD=mypassword DB_NAME=mydb
第二步:在代码中使用
在代码中使用 env-settings 可以非常轻松的引入和使用,只需要在代码中引入 env-settings,并将需要的参数传入:
-- -------------------- ---- ------- ----- --- - ------------------------ ----- -------- - ----- -------- ------- -------- ------- ------------ ------- -------- ------- -- ------ ----------------------
上述代码将会从环境变量中读取 DB_HOST, DB_USER, DB_PASSWORD 和 DB_NAME 的值,并以字符串的形式返回这些参数的对象,对象值将为:
{ "DB_HOST": "localhost", "DB_USER": "myuser", "DB_PASSWORD": "mypassword", "DB_NAME": "mydb" }
深入了解
接下来,我们将更加深入地了解 env-settings 中的一些有用的特性:
支持类型转换
env-settings 支持将环境变量的值转换为字符串、数字、布尔值等常见数据类型。要使用此功能,请在传递参数时指定参数的类型:
const env = require('env-settings'); const dbConfig = env({ DB_PORT: Number, DB_READ_ONLY: Boolean, }, 'db'); console.log(typeof dbConfig.DB_PORT, typeof dbConfig.DB_READ_ONLY);
将会输出:
number boolean
支持默认参数
env-settings 支持设置一个默认值,在环境变量中未设置时将会使用默认值:
-- -------------------- ---- ------- ----- --- - ------------------------ ----- -------- - ----- -------- ------- -------- - ----- ------- -------- ------ -- -------- ------- ------------ ------- -------- ------- -- ------ ----------------------
在上述代码中,当 DB_PORT 未在环境变量中设置时,将会默认为 27017。
支持命名空间
当应用中有多个配置项时,可以使用命名空间来区分。例如,当需要配置数据库和邮件服务时,可以创建两个不同的命名空间,分别为 db 和 email:
-- -------------------- ---- ------- ----- --- - ------------------------ ----- -------- - ----- -------- ------- -------- ------- -------- ------- ------------ ------- -------- ------- -- ------ ----- ----------- - ----- ----------- ------- ----------- ------- ----------- ------- --------------- ------- -- --------- --------------------- -------------
在上述代码中,将输出两个不同的对象,分别为 db 和 email。
结论
在本文中,我们详细介绍了如何使用 npm 包 env-settings 来管理环境变量。通过使用此包,我们可以轻松快速地在不同的环境中进行部署,并且提供了一些有用的特性。希望此文对您学习和使用 env-settings 有所帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066e25a563576b7b1ece83