Nodejs环境变量process.env打包

本文详细介绍了如何通过`.env`文件和`package.json`配置环境变量,以及如何根据命令行参数动态加载不同环境。通过示例展示了如何在Node.js项目中区分开发和生产环境,实现灵活的环境切换。

一、环境对象说明

process

process 对象是一个(global)全局变量,提供有关当前 Node.js 进程的信息并对其进行控制。
process官方文档

process.env

process.env 属性会返回包含用户环境的对象,能返回项目运行所在环境的一些信息。
process.env官方文档

process.env.NODE_ENV

NODE_ENV是一个用户自定义的变量,它的用途是区分生产环境或开发环境。

process.argv

process.env 属性返回数组,其中包含启动 Node.js 进程时传入的命令行参数。
第一个元素将是 process.execPath。 如果需要访问 argv[0] 的原始值,请参阅 process.argv0。
第二个元素将是正在执行的 JavaScript 文件的路径。
其余元素将是任何其他命令行参数。
process.argv官方文档

二、环境变量配置方式

方式一:通过加载.env文件方式配置环境变量

1.在项目根目录创建 .env 文件,以 NAME = VALUE 的形式添加环境变量

# .env
NODE_ENV = 'production'

2.安装dotenv模块,通过它将 .env 文件加载到环境中

npm install dotenv --save-dev

3.在项目入口文件顶部引入并执行配置

const dotenv = require("dotenv");
dotenv.config();

4.在项目中使用

console.log(process.env.NODE_ENV);
方式二:通过package.json配置
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "export NODE_ENV='development' && node app.js",
    "build": "export NODE_ENV='production' && node app.js" 
}

注:在Mac和Linux上使用export, 在windows上export要换成set

三、示例:传递不同参数加载不同环境变量配置

1.初始化项目

在项目根目录终端中执行命令初始化
安装dotenv模块,用来加载环境变量配置文件

npm init -y
npm install dotenv -S
2.创建环境变量配置文件

在项目根目录下创建.env.developmen.env.production文件

.env.developmen

NODE_ENV=development
APP_BASE_URL=http://127.0.0.1

.env.production

NODE_ENV=production
APP_BASE_URL=http://www.lihefei.com
3.编写服务程序

在项目根目录下创建index.js

index.js

const dotenv = require("dotenv"); // 环境变量加载模块
const args = process.argv;  // 获取node命令参数,得到的是一个数组
// 例如执行命令:node index.js --mode dev 得到的参数结果是:['node', 'index.js', '--mode', 'dev']

// 根据命令参数组合环境变量文件名
// 如果命令参数数组长度大于3,且第三个参数是--mode,且第四个参数有值就拼接环境变量文件名,不满足前面三个条件则默认为.env.production
const envPath = (args.length > 3 && args[2] === '--mode' && args[3]) ? ('.env.' + args[3]) : '.env.production';
// 例如命令是node index.js 不带参数,envPath的值为:'.env.production'
// 例如命令是node index.js --mode developmen 有带参数,envPath的值为:'.env.developmen' 

dotenv.config({ path: envPath }); // 加载配置文件

console.log(process.env.APP_BASE_URL); // 打印环境变量配置的APP_BASE_URL值
4.运行程序打印APP_BASE_URL值

1.执行不带参数的node命令

node index.js

输出的结果是:http://www.lihefei.com

2.执行带参数的node命令

node index.js --mode developmen

输出的结果是:http://127.0.0.1

5.在package.json中配置脚本打包命令

1.编辑package.json文件,在scripts属性中新增build、dev命令

"scripts": {
  "build": "node build/index.js",
  "dev": "node build/index.js --mode development"
}

2.在项目根目录终端中执行打包命令

npm run dev
npm run build

输出结果:
http://127.0.0.1
http://www.lihefei.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值