不一樣環境下配置文件使用 - Node實戰

在實際的項目會存在多個不一樣的環境,不一樣的環境下,一些配置是不相同的,如何在不一樣的環境下調用不一樣的配置,提升開發效率?mysql

1. config-lite模塊

首先引入一個配置模塊config-lite,使用命令npm i config-lite --save安裝。git

一般咱們會針對不一樣的環境,將配置寫入不一樣的配置文件中,在Node項目下新建config目錄,裏面新建不一樣環境的配置文件,這裏我以『開發』以及『生產』兩個環境做爲例子來說解如何操做。sql

開發環境中,咱們在config目錄下新建兩個文件:test.jsdefault.js,你可能會問,爲啥沒有生產機配置文件,由於生產機配置要在生產環境下再建立嘛。npm

test.js配置文件中寫入代碼以下(PS. 這裏以mysql的配置爲例):json

// test.js
module.exports = {
  mysql : {
    host: "localhost",
    user: "lupeng",
    password: "080910",
    database: "b1imd"
  }
};

default.js裏寫入一些默認的配置文件,例如session的配置等。windows

// default.js
module.exports = {
  mysql : {
    host: "10.20.141.220",
    user: "lupeng",
    password: "123456",
    database: "b1imd"
  },
  session: {
    secret: 'keyboard cat',
    resave: false,
    saveUninitialized: true,
    cookie: {
      maxAge: 1000*60*60
    }
  }
};

好了,配置文件寫好了,如何使用呢?這裏咱們使用的 config-lite模塊,這個模塊是依據環境變量來選擇不一樣的配置文件的,因此在使用以前咱們須要修改package.json裏的啓動命令:服務器

"scripts": {
    "start": "NODE_ENV=production supervisor --harmony -i views/ ./bin/www",
    "test": "NODE_ENV=test supervisor --harmony -i views/ ./bin/www"
  },

能夠看到,上面有兩條啓動命令,一條是針對生產機,設置了NODE_ENV=production,一條是針對測試機,設置了NODE_ENV=test,當咱們使用npm test啓動項目的時候,config-lite會去抓取test.js配置,而且會與default.js裏配置去合併,若是有相同的對象,會覆蓋default.js裏的配置。如上例子都有mysql的對象,那麼這裏會以test.js裏的對象爲準。cookie

好了,下面來介紹一下如何在項目中使用config-lite模塊,在app.js裏代碼以下:session

// 省略...
var config = require('config-lite')(__dirname);
// 省略...
app.use(session(config.session));
console.log("mysql服務器:" + config.mysql.host);    // display mysql-config
// 省略...

引入以後,能夠直接使用配置文件中的配置對象。app

2. 生產環境

那麼在生產環境中,如何使用呢?上面已經介紹了config-lite基本原理以及用法,在生產環境的時候,咱們只須要在生產機環境中config目錄下新建production.js文件,而後使用啓動命令npm start便可。

爲了不測試環境以及生產壞境配置文件混淆,能夠經過.gitignore文件忽略配置文件,添加以下:

# config
config/*
!config/default.*

這樣,git會忽略除了default.js以外的配置文件,在本地開發環境中,能夠建立多個配置文件測試使用,只需設置對應的環境變量便可。須要注意的是環境變量名需同配置文件名同樣。

3. windows環境

也許你是一個多系統環境開發者,可能同時在Linuxwindows環境下開發,因爲windows下設置環境的變量的語法不太同樣,因此能夠在package.json啓動命令中再加上兩句,以下:

"scripts": {
    "start": "NODE_ENV=production supervisor --harmony -i views/ ./bin/www",
    "test": "NODE_ENV=test supervisor --harmony -i views/ ./bin/www",
    "winStart": "SET NODE_ENV=production&&supervisor --harmony -i views/ ./bin/www",
    "winTest": "SET NODE_ENV=test&&supervisor --harmony -i views/ ./bin/www"    
  }

這樣,若是部署在windows環境下,在config目錄下新建production.js配置文件,啓動命令npm winStart;若是部署在Linux類Unix環境下,一樣是建立production.js,啓動命令npm start便可。


更多內容請訪問:LP's Blog

相關文章
相關標籤/搜索