跳到主要内容

如何配置环境变量env

Dotenv

Dotenv 是一个零依赖的模块,它可以将env文件的变量导入到process.env中。

你只需要在项目根目录中新建一个.env文件,写入对应的环境变量:

#这是一行注释
PRIVATE_KEY="Your key"

然后在js文件中写入:

require('dotenv').config()
console.log(process.env.PRIVATE_KEY) //"Your key"

此时我们就可以从process.env对象中找到它们了。

在项目中通常会存在多个env文件,例如:.env.prod.env.dev等等,不同的文件对应了不同的环境变量值。

所以我们也可以显式的指定dotenv加载的文件,以应对不同的开发场景:

require('dotenv').config({ path: '.env.dev')

Dotenv Cli

手动修改代码的方式指定env文件太麻烦了,尤其是拥有多个env文件的时候非常容易写错。

Dotenv Cli 这个工具能很好的解决这个问题。

通常我们可以在 package.json中添加命令:

  "scripts": {
"dev": "dotenv -e .env.dev node app.js",
"start":"dotenv -e .env.prod node app.js"
},

这样每次只用执行不同的命令就可以分别指定加载不同环境变量了。

Cross-env

Cross-env 可以让你拥有一个简单的命令,而不用担心平台的环境变量设置和使用问题。

npm install --save-dev cross-env

然后在package.json中写入:

{
"scripts": {
"build": "cross-env NODE_ENV=production node app.js"
}
}

CMD:Set

Windows Cmd 中有一个命令set可以设置当前终端的变量。

set NODE_ENV='prod'

这样就设置好了一个变量,你可以打印它:

echo %NODE_ENV% 

此时命令行将会输出 'prod'

Node 在执行时,会将当前终端的变量加载进process.env中,

consolo.log(process.env.NODE_ENV) //'prod'

所以,你就能这么写了:

{
"scripts": {
"build": "set NODE_ENV=production && node app.js"
}
}

Nodemon env 配置

Noemon 在检测到目录中的文件更改时可以自动重新启动节点应用程序。

我们经常在开发中使用 Nodemon,它启动时可以携带参数,也可以在 package.json中指定启动参数:

"nodemonConfig": {
"restartable": "rs",
"ignore": [
"node_modules/**/node_modules"
],
"delay": "2500",
"env": {
"NODE_ENV": "development",
"NODE_CONFIG_DIR": "./config"
}
}

通过Dotenv Cli在运行时设置环境变量,在代码中只需要简单配置即可使用:

require('dotenv').config({ path: `.env.${process.env.NODE_ENV||'dev'}` })

通过 Cross-envNodemon 启动参数SET 命令,可以直接使用:

const port = process.env.PORT