Node项目中两个常用的环境变量配置工具

1. 安装依赖

按下图所示安装相关依赖。

bash 复制代码
{
    "name": "demo0",
    "version": "1.0.0",
    "main": "index.js",
    "scripts": {
        "dev": "cross-env NODE_ENV=development node index.js",
        "prod": "cross-env NODE_ENV=production node index.js"
    },
    "keywords": [ ],
    "author": "",
    "license": "ISC",
    "description": "",
    "dependencies": {
        "config": "^4.1.1",
        "cross-env": "^10.1.0",
        "dotenv": "^17.2.3",
        "js-yaml": "^4.1.1"
    }
}

安装完cross-env依赖后,为了测试不同的启动环境,需要添加两个不同的启动环境变量。

2. dotenv的使用

这个工具库适合配置一些简单的环境变量,格式只能是键值对这种格式的,不支持嵌套和对象格式。

新建一个.env文件在项目根目录下,添加如下变量:

javascript 复制代码
TOKEN_SECRET =  "your_secret_token_here_env"
DATABASE_URL = "postgresql://user:password@localhost:5432/yourdatabase"

然后在文件中就可以如下方式获取.env里面配置的环境变量。

javascript 复制代码
require('dotenv').config();
console.log(process.env)

输出结果如下所示,在.env里面配置的变量就可以看到了。

3. config的使用

这个工具库可以配置一些比较复杂的数据格式,比如常见的json格式。

在项目根目录下新建一个config的文件夹,添加default.json文件,这个文件里是默认配置。

javascript 复制代码
{
    "token_secret": "long-token_secret",
    "database": {
        "host": "www.default.com",
        "port": 9526,
        "name": "my_database",
        "password": "db_password"
    }
}

然后在文件中就可以用以下方式获取配置的环境变量。

javascript 复制代码
const config = require('config');
const databaseConfig = config.get('database');
console.log(databaseConfig);

需要区分环境可以分别添加development.json和production.json这两个文件。

javascript 复制代码
{
    "database": {
        "host": "www.production.com",
        "port": 9529
    }
}

当默认配置和生产环境配置共存时,执行生产环境的启动命令时,生产环境中定义配置将会与默认配置进行合并,相同的变量名将会被生产环境的覆盖。

开发环境的也同样如此,只需要另外定义一个development.json即可。

以下是在生产环境合并后的输出:

config这个库不仅支持json文件的配置 ,还支持其它很多文件类型的配置,比如yaml文件类型的配置,需要注意的是,为了解析yaml的文件类型,需要安装相应的解析器js-yaml。

以下是关于yaml的配置信息,可以结合上面的输出结果来看。

default.yaml

javascript 复制代码
"token_secret": "long-token_secret"
"database": 
    "host": "www.default.com"
    "port": 8080
    "name": "database_name"
    "password": "123456"

development.yaml

javascript 复制代码
"database":
  "host": "www.development.com"
  "port": 9527

production.yaml

javascript 复制代码
"database":
  "host": "www.production.com"
  "port": 9528
相关推荐
程序员老邢21 小时前
《技术底稿 46》AI 解构成果→知识库自动化同步管道 设计与落地总结
架构设计·异步任务·数据同步·后端开发·幂等性·技术底稿
小bo波5 天前
枚举实战
java·设计模式·枚举·后端开发·代码重构
极光代码工作室5 天前
基于SpringBoot的任务管理系统
java·springboot·web开发·后端开发
Trouvaille ~5 天前
【Redis篇】Redis 主从复制:数据同步的原理与实现
数据库·redis·缓存·中间件·高可用·主从复制·后端开发
MageGojo6 天前
随机文案模块怎么做?从接口封装到前端展示的完整实现思路
javascript·前端开发·api接口·后端开发·随机文案
MageGojo6 天前
实时票房看板怎么做?接口封装、缓存与前端列表渲染实战
前端开发·api接口·数据看板·后端开发·电影数据
晚风予卿云月7 天前
【Linux】进程控制(一)—进程创建、进程终止与信号全流程详解
linux·运维·服务器·后端开发
Trouvaille ~9 天前
【Redis】Redis 持久化:RDB 与 AOF 深度解析
redis·中间件·持久化·aof·后端开发·rdb·基础入门
Javatutouhouduan9 天前
普通Java程序员如何高效学习JVM?
java·jvm·java虚拟机·java面试·后端开发·java编程·java八股文
Trouvaille ~10 天前
【Redis篇】Redis 渐进式遍历与数据库管理
数据库·redis·缓存·中间件·数据库管理·后端开发·scan