@kites/engine
    TypeScript icon, indicating that this package has built-in type declarations

    1.2.0 • Public • Published

    kites-engine

    Core Engine of Kites

    Join the chat at https://gitter.im/nodevn/kites npm version npm downloads Travis

    Kites is a framework providing dynamic applications assembling and API routing. It contains a lot of templates and extensions help build up applications quickly.

    The engine is a core component that is responsible for connecting extensions and initializing in order to launch the Web application.

    Simplest Example

    Here below is TypeScript version: The application simply prints out a greeting: Hello World!

    import engine from '@kites/engine';
     
    async function bootstrap() {
        const app = await engine().init();
        app.logger.info('Hello World!');
    }
     
    bootstrap();

    Node/JavaScript version:

    const engine = require('@kites/engine');
     
    // init the kites engine
    engine().init().then((core) => {
        core.logger.info('Hello World!')
    })

    API Usage

    Extensions auto discovery

    Kites engine has an option to allow the application auto discover extensions in the directory tree. This means kites will searches for files kites.config.js which describes the extensions and applies all the extensions that are found automatically.

    This is fundamental principle for allowing extensions as plugins to be automatically plugged into the system. The application completed with minimalist lines of code, but very powerful!

    import engine from '@kites/engine';
     
    async function bootstrap() {
        // let kites autodiscover the extensions
        const app = await engine(true).init();
        app.logger.info('A new kites engine started!');
    }
     
    bootstrap();

    Kites extensions auto discovery might slows down the startup and can be explicitly override by using use function. The following code has a slightly complicated configuration for each extensions.

    import engine from '@kites/engine';
    import express from '@kites/express';
    import roomrtc from '@kites/roomrtc';
     
    async function bootstrap() {
        const app = await engine()
            .use(express())
            .use(roomrtc())
            .init();
     
        app.logger.info('A new kites engine started!');
    }
     
    bootstrap();

    Extensions

    You are welcome to write your own extension or even publish it to the community. Please check test/extensions to see an example.

    TODO:

    • Write an article for implementing custom kites extension

    Logging

    kites leverages winston 2 logging abstraction together with debug utility. To output logs in the console just simply set the DEBUG environment variable

    DEBUG=kites node app.js

    on windows:

    set DEBUG=kites & node app.js

    kites exposes logger property which can be used to adapt the logging as you like. You can for example just add winston console transport and filter in only important log messages into console.

    import engine from '@kites/engine';
    import winston from 'winston';
     
    const app = engine();
    app.logger.add(winston.transports.Console, { level: 'info' });

    Install

    npm i @kites/engine

    DownloadsWeekly Downloads

    5

    Version

    1.2.0

    License

    MIT

    Unpacked Size

    79.7 kB

    Total Files

    36

    Last publish

    Collaborators

    • vunb