使用dotenv管理Node項目環(huán)境,多文件管理多環(huán)境(開發(fā)環(huán)境、生產(chǎn)環(huán)境)

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容