使用dotenv管理Node项目环境,多文件管理多环境(开发环境、生产环境)

Dotenv 管理Node项目环境

在使用Node开发项目的时候,使用环境配置文件来管理环境变量是一种常见地对项目中通用配置项的管理方式,其中通常包含敏感信息,如API密钥、数据库凭据等等。

现在我们以开发和生产两个环境为例,看看怎么同时通过 .env.development.env.production 两个文件管理不同的环境。

Dotenv下载

npm install dotenv

同时为了能够在启动的时候指定环境和配置文件,需要再安装一个包 dotenv-cli

npm install dotenv-cli

环境配置文件

在根路径下创建两个文件:.env.development.env.production

.env.development 中写入测试数据:

BASE_URL=127.0.0.1
ENV=development

.env.production 中写入测试数据:

BASE_URL=123.123.123.123
ENV=production

环境变量的命名一般使用大写字母,单词用下划线隔开。

配置启动脚本

Node项目的启动脚本都位于 package.json 文件的 scripts中,该文件一般在项目根目录。

以 koa 项目为例,开始的 启动脚本内容为:

"scripts": {
    "start": "node bin/www",
    "dev": "nodemon bin/www",
    "prd": "pm2 start bin/www",
    "test": "echo \"Error: no test specified\" && exit 1"
  }

我们想要 npm run dev 能启动开发模式,而 npm run prd 能启动生产模式,但是 dotenv 并不能根据你的项目框架和默认执行命令进行开发模式的设置和环境配置文件的启用,所以我们还需要手动指定:

"scripts": {
    "start": "node bin/www",
    "dev": "dotenv -e .env.development nodemon bin/www",
    "prd": "dotenv -e .env.production pm2 start bin/www",
    "test": "echo \"Error: no test specified\" && exit 1"
  }

可以看到,在上面的脚本命令中,将期望启用环境配置的启动模式命令前加上了 dotenv -e [环境配置文件名],其中开头的 dotenv 是安装了 dotenv-cli 包才能使用的,没下会报找不到 dotenv 命令;-e需要空格,然后接配置文件的文件名,并不是开发环境一定得叫 development ,只要在这里的环境配置文件名能对应上你创建的环境配置文件名即可。

使用环境变量

上我们完成了不同环境的配置,那我们该如何使用配置文件中的环境变量呢?

首先需要在项目的入口文件处引入 dotenv

// 加载配置文件
require('dotenv').config()

请保证在使用环境变量之前加载这段代码,成功之后 dotenv 会将当前应该启动的环境配置文件中的环境变量添加到 process 全局对象上的 env上。
加载完成之后我们就能通过 process.env.[环境变量的变量名] 来使用配置文件中设置的变量了:

启动开发环境

npm run dev

代码

// 加载配置文件
require('dotenv').config()

...

console.log(process.env.BASE_URL)

输出 127.0.0.1

你可能感兴趣的:(后端,项目教程,koa,后端,dotenv,env)