nodecloud-boot

0.8.8 • Public • Published

NodeCloud-Boot

Usage

npm install nodecloud-boot --save

Using with sequelize and mysql:

import NCBoot from 'nodecloud-boot';
import Koa from 'koa';
 
const app = new Koa();
 
const configPath = __dirname;
const ncBoot = NCBoot.getInstance(configPath);
 
function startCallback(webConfig) {
    //do something before the web server start.
    
    return app.callback();
}
 
function endCallback() {
    //doing something before the process exit.
    
}
 
function initModels(sequelize) {
    //init sequelize models in this.
    
}
 
ncBoot.init({initModels})(startCallback, endCallback);
 
const consul = ncBoot.consul;
const sequelize = ncBoot.sequelize;
const client = ncBoot.client;
const loadbalance = ncBoot.loadbalance;
const logger = ncBoot.logger;

Using without sequelize:

import NCBoot from 'nodecloud-boot';
import Koa from 'koa';
 
const app = new Koa();
 
const configPath = __dirname;
const ncBoot = NCBoot.getInstance(configPath);
 
function startCallback(webConfig) {
    //do something before the web server start.
    
    return app.callback();
}
 
function endCallback() {
    //doing something before the process exit.
    
}
 
ncBoot.initApp(startCallback, endCallback);
 
const consul = ncBoot.consul;
const sequelize = ncBoot.sequelize;
const client = ncBoot.client;
const loadbalance = ncBoot.loadbalance;
const logger = ncBoot.logger;

Config file bootstrap-${env}.js

import path from 'path';
 
module.exports = {
    web: {
        serviceId: null,
        serviceName: 'multi-cloud-schedule-service',
        port: 3006
    },
    consul: {
        host: '192.168.0.30',
        port: 8500,
        discoveryHost: null,
        timeout: '1s',
        interval: '10s'
    },
    config: {
        server: {
            name: 'multi-cloud-config-service',
            url: '/multi-cloud-config-service/v1/config/:service/:env/inner',
            interval: 60000,
            watch: false,
            client: 'multi-cloud-schedule-service'
        },
        local: {
            path: __dirname,
            service: 'config',
            ext: 'js'
        }
    },
    logger: {
        path: path.resolve(__dirname, '../log')
    },
    loadbalance: {
        strategy: 'random',
        request: {
            forever: true,
            timeout: 60000
        }
    },
    brake: {
        enable: true,
        timeout: 60000
    }
};

Config file config-${env}.js

module.exports = {
    dataSource: {
        database: 'test',
        host: '127.0.0.1',
        username: 'root',
        password: 'root',
        pool: {
            min: 10,
            max: 100,
            idle: 20000,
            acquire: 20000
        }
    }
};

API

NCBoot.getInstance(path): ncBoot

  • path: The position of the config file bootstrap-${NODE_ENV}.js
  • ncBoot: It will return the nodecloud-boot instance.

ncBoot.initApp(startCallback, endCallback)

  • startCallback: function(webConfig), A callback function before server started.
  • endCallback: function() A callback function before server stopped.

ncBoot.init(obj): {initApp(startCallback, endCallback)}

  • obj: {initModels: function(sequelize)}
  • initApp

ncBoot.consul

The consul instance, you can use ncBoot.consul.client to get the original node-consul instance.

ncBoot.sequelize

The sequelize instance.

ncBoot.client

An http client with loadbalance and circuit.

ncBoot.loadbalance

An http client with loadbalance.

ncBoot.logger

The logger instance.

Readme

Keywords

Package Sidebar

Install

npm i nodecloud-boot

Weekly Downloads

9

Version

0.8.8

License

MIT

Unpacked Size

279 kB

Total Files

36

Last publish

Collaborators

  • zfeng