Dotenv 管理Node項目環(huán)境
在使用Node開發(fā)項目的時候,使用環(huán)境配置文件來管理環(huán)境變量是一種常見地對項目中通用配置項的管理方式,其中通常包含敏感信息,如API密鑰、數(shù)據(jù)庫憑據(jù)等等。
現(xiàn)在我們以開發(fā)和生產(chǎn)兩個環(huán)境為例,看看怎么同時通過 .env.development 和 .env.production 兩個文件管理不同的環(huán)境。
Dotenv下載
npm install dotenv
同時為了能夠在啟動的時候指定環(huán)境和配置文件,需要再安裝一個包 dotenv-cli:
npm install dotenv-cli
環(huán)境配置文件
在根路徑下創(chuàng)建兩個文件:.env.development 和 .env.production
在 .env.development 中寫入測試數(shù)據(jù):
ENV=development
HOST=localhost
USER=root
PASSWORD=root@123456
DB=testdb
在 .env.production 中寫入測試數(shù)據(jù):
ENV=production
HOST=http://123.123.123.123
USER=root
PASSWORD=root@123456
DB=testdb
環(huán)境變量的命名一般使用大寫字母,單詞用下劃線隔開。
配置啟動腳本
Node項目的啟動腳本都位于 package.json 文件的 scripts中,該文件一般在項目根目錄。
以 koa 項目為例,開始的 啟動腳本內(nèi)容為:
"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 能啟動開發(fā)模式,而 npm run prd 能啟動生產(chǎn)模式,但是 dotenv 并不能根據(jù)你的項目框架和默認(rèn)執(zhí)行命令進(jìn)行開發(fā)模式的設(shè)置和環(huán)境配置文件的啟用,所以我們還需要手動指定:
"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"
}
可以看到,在上面的腳本命令中,將期望啟用環(huán)境配置的啟動模式命令前加上了 dotenv -e [環(huán)境配置文件名],其中開頭的 dotenv 是安裝了 dotenv-cli 包才能使用的,沒下會報找不到 dotenv 命令;-e需要空格,然后接配置文件的文件名,并不是開發(fā)環(huán)境一定得叫 development ,只要在這里的環(huán)境配置文件名能對應(yīng)上你創(chuàng)建的環(huán)境配置文件名即可。
使用環(huán)境變量
上我們完成了不同環(huán)境的配置,那我們該如何使用配置文件中的環(huán)境變量呢?
首先需要在項目的入口文件處引入 dotenv:
加載配置文件
require('dotenv').config()
請保證在使用環(huán)境變量之前加載這段代碼,成功之后 dotenv 會將當(dāng)前應(yīng)該啟動的環(huán)境配置文件中的環(huán)境變量添加到 process 全局對象上的 env上。
加載完成之后我們就能通過 process.env.[環(huán)境變量的變量名] 來使用配置文件中設(shè)置的變量了:
啟動開發(fā)環(huán)境
npm run dev代碼
加載配置文件
require('dotenv').config()
...
console.log(process.env.HOST)
原文鏈接:https://blog.csdn.net/qq_51574759/article/details/131496233