Node如何方便切換環(huán)境——環(huán)境變量(NODE_ENV)設(shè)置
在公司,一個項目一般會有開發(fā)版本、測試版本、線上版本,每個版本可能都會對應(yīng)不同的相關(guān)參數(shù),或許數(shù)據(jù)庫的連接地址不同,或許請求的API地址不同等等。為了方便管理,我們通常做成配置文件的形式,根據(jù)不同的環(huán)境,加載不同的文件。如果手動修改代碼中加載配置文件的路徑,這樣會給人一種很low的感覺,下面我們將一下看起來逼格較為方便的做法。
啟動node項目
首先,我們說一些基礎(chǔ)性的知識。一個簡單的node項目,會有一個package.json文件,用來保存項目的依賴包和一些項目描述的信息;會有一個入口主文件,用來啟動項目。這邊假設(shè)入口主文件為app.js,啟動項目的方法如下:
// 方法一
node app.js。
我們還有另外一種方式,通過package.json文件啟動項目,下面我們看一下如何操作。
1、修改package.json文件
// 在scripts中添加start項,后面的值為啟動app.js的命令
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node app.js"
},
2、通過npm命令運(yùn)行node項目
在控制臺運(yùn)行npm run start,這樣項目就可以啟動了。這里的start就是上面package.json中的start。
明明第一種方式很簡單,為什么會有第二種這么繁瑣的方式呢?存在即合理,因為第二種方式我們還可以做其他的操作。(下面開始進(jìn)入正題了)
之前我們說要設(shè)置環(huán)境變量NODE_ENV,第二種方法給我們帶來了方案。例如,我們想把NODE_ENV設(shè)置成development,我們可以修改上面的配置。
// 在scripts中添加start項,后面的值為啟動app.js的命令
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "export NODE_ENV='development' && node app.js" // 在Mac和Linux上使用export, 在windows上export要換成set
},
這樣我們在運(yùn)行npm run start的時候,就會自動設(shè)置NODE_ENV的值為development。設(shè)置了之后,我們?nèi)绾潍@取呢?別急,接下來我們就說一下如何獲取環(huán)境NODE_ENV。
通過下面的方式,我們可以在node中打印出上面設(shè)置的NODE_ENV的值了
console.log(process.env.NODE_ENV); // development
現(xiàn)在,我們可以通過配置package.json來設(shè)置環(huán)境變量,又可以在代碼中獲取到NODE_ENV的值,所以可以我們可以輕松的切換環(huán)境啦。
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"
}
npm run start就是開發(fā)環(huán)境
npm run build就是線上環(huán)境