enginemill
Making it easier to build the internet.
Last updated 4 years ago by kixxauth .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install enginemill 
SYNC missed versions from official npm registry.

Enginemill

npm version

Enginemill is a Node.js web development framework. The goal is to codify some opinions about how to structure a Node.js system and provide tools to make the development of your systems easier and more fun.

  • Bluebird for Promises.
  • Lodash (Underscore) too.
  • Filepath to work with the filesystem.
  • Yargs to parse command line options.
  • Moment to parse, validate, manipulate and display dates.
  • Numeral for Number formatting and manipulation.
  • An Object factory for composing mixins.
  • Serially load plugins you define and kicks off your app only when they have all loaded.
  • Comprehensive logging based on Bunyan.
  • Message and pattern based communication with Oddcast.
  • Promisified request wrapper for making HTTP requests.
  • Supports CoffeeScript out of the box, which is nice for config and plugin initialization files.

On The Web

Built by @kixxauth

Examples:

Here is an example of booting up a new Express.js web application:

In ./bin/start-server.js:

var enginemill = require('enginemill');

// Loads the filepath (https://github.com/kixxauth/filepath) module.
var path = enginemill.path;

var server = require('../server');

enginemill.load({
    appdir: path.create(__dirname, '..'),

    // Plugins (expected in appdir/initializers/).
    initializers: [
        'configs',
        'middleware',
        'routes'
    ]
})
.then(server.start)
.catch(function (err) {
    console.error('There was an error starting the server:');
    console.error(err.stack || err.message || err);
    process.exit(1);
});

In './initializers/configs.coffee' (configs plugin):

enginemill = require 'enginemill'
path       = enginemill.path

module.exports = (app) ->
    # app.environment is set with the --environment option, or the
    # NODE_ENV environment variable.
    app.configs.port = if app.environment is 'production' then 8080 else 3000

    # Set the public path to '../public'
    app.configs.public_path = path.create(__dirname, '..', 'public')

In './initializers/middleware.coffee':

express = require 'express'

module.exports = (app) ->
    app.API.httpApp = express()
    app.API.httpApp.use bodyParser.json()
    app.API.httpApp.use bodyParser.urlencoded({ extended: false })
    app.API.httpApp.use cookieParser()
    app.API.httpApp.use express.static(app.configs.public_path.toString())

In './initializers/routes.coffee':

dashboard = require '../presenters/dashboard'

module.exports = (app) ->
    app.API.httpApp.get '/', dashboard.get

In ./server.js:

var http = require('http');
var enginemill = require('enginemill');

// Loads Underscore/Lodash as 'U' symbol.
var U = enginemill.U;

exports.start = function (app) {
    var port = app.configs.port;

    // Set the port number in Express.
    app.httpApp.set('port', port);

    // Setup the server
    var server = http.createServer(app.httpApp);
    server.on('listening', U.partial(exports.onServerListening, server));
    server.listen(port);
};

exports.onServerListening = function (server) {
    var addr = server.address();
    console.log('Listening on %s:%s', addr.address, addr.port);
    console.log('press CTRL-C to stop');
};

Run the server with node ./bin/start-server.js --environment production;

Copyright and License

Copyright: (c) 2014 - 2016 by Kris Walker kris@kixx.name (http://www.kixx.name/)

Unless otherwise indicated, all source code is licensed under the MIT license. See MIT-LICENSE for details.

Current Tags

  • 1.8.0                                ...           latest (4 years ago)

12 Versions

  • 1.8.0                                ...           4 years ago
  • 1.7.0                                ...           4 years ago
  • 1.5.3                                ...           4 years ago
  • 1.5.0                                ...           5 years ago
  • 1.0.0                                ...           5 years ago
  • 0.5.2                                ...           5 years ago
  • 0.5.0                                ...           5 years ago
  • 0.2.1                                ...           6 years ago
  • 0.1.1                                ...           6 years ago
  • 0.1.0                                ...           6 years ago
  • 0.3.0 [deprecated]           ...           7 years ago
  • 0.0.0                                ...           7 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (12)
Dev Dependencies (3)
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |