Tạo file config cấu hình project nodejs

Bạn nhức đầu vì không biết cấu hình database,folder upload…ở đâu khi setup môi trường test hay deploy production thì đây là giải pháp cho bạn:
Bước 1:
Tạo folder config
Tạo file config/config.json chứa thông tin cấu hình project của bạn:

{
    "development": {
        "config_id": "development",
        "app_name": "my app",
        "app_desc": "my app desc",
        "node_port": 81,
        "database": {
            "host":"localhost",
            "user":"root",
            "password":"",
            "name":"topgame"
        },
        "dir_images":"./images/"
    },
    "testing": {
        "config_id": "testing",
        "database": "my-app-db-test"
    },
    "staging": {
        "config_id": "staging",
        "node_port": 8080,
        "database": "my-app-db-stag"
    },
    "production": {
        "config_id": "production",
        "node_port": 8080,
        "database": "my-app-db-prod"
    }
}

Bước 2:Tạo file config.js có nhiệm vụ dọc file config.json và cấu hình môi trường phát triển:

// requires
const _ = require('lodash');

// module variables
const config = require('./config.json');
const defaultConfig = config.development;
const environment = process.env.NODE_ENV || 'development';
const environmentConfig = config[environment];
const finalConfig = _.merge(defaultConfig, environmentConfig);

// as a best practice
// all global variables should be referenced via global. syntax
// and their names should always begin with g
global.gConfig = finalConfig;

// log global.gConfig
console.log(`global.gConfig: ${JSON.stringify(global.gConfig, undefined, global.gConfig.json_indentation)}`);

Bước 3: Khai báo và sử dụng
Khai báo:

// environment variables
process.env.NODE_ENV = 'development';

// uncomment below line to test this code against staging environment
// process.env.NODE_ENV = 'staging';

// config variables
const config = require('./config/config.js');

Sử dụng:

app.get('/', (req, res) => {
  res.send(global.gConfig.database.name);
});

Tham khảo : https://codeburst.io/node-js-best-practices-smarter-ways-to-manage-config-files-and-variables-893eef56cbef

0 Shares

Leave a Reply

avatar
  Subscribe  
Notify of