hardwire
v0.10.11
Published
Structured and scalable node.js app container. WORK IN PROGRESS
Downloads
121
Maintainers
Readme
Hardwire
Work in progress
Structured and scalable node.js app container
(if you are looking for the CMS check JetKit)
Features
- Scalable architecture structured in blocks and plugins
- Tree based dependency container
- Build system
- Boilerplate generator
- Environment oriented configurations loader
- Add .env file content to environment variables
- Environment variables processor
Instructions
Coming soon
Express - MongoDB example
var Hardwire = require('hardwire'),
express = require('express'),
mongoose = require('mongoose');
var hardwire = new Hardwire({
output: 'output/build',
// folders to build in every block
buildFolders: ['public', 'views'],
// default config
config: {port: 3000},
// force load production environment
environment: 'production',
// rules for adding environment variables into config
envProcessing: {
// this will set MONGO_URI value from environment variables
// into mongodb.uri property of config
MONGO_URI: 'mongodb.uri'
},
// to do before build blocks
beforeBuild: function (next) {
// this.config ....
next();
},
// to do after build blocks
afterBuild: function (next) {
next();
},
// work with config before load config
beforeConfig: function (next) {
// this.config ....
next();
},
// work with config after load config
afterConfig: function (next) {
next();
},
// work with tree before load tree
beforeLoad: function (next) {
this.tree
.add( 'express', express )
.add( 'app', express( ))
.add( 'mongoose', mongoose )
.then( next );
},
// rules for load every block
load: function (blockPath, next) {
this.tree
.folder( blockPath + '/lib', {
hidden: true
})
.folder( blockPath + '/models', {
group : 'models',
suffix: 'Model'
})
.folder( blockPath + '/controllers', {
group : 'control',
suffix: 'Ctrl'
})
.folder( blockPath + '/routes', {
group: 'router',
suffix: 'Router'
})
.then( function () {
next();
});
},
// work with tree after load tree
afterLoad: function (next) {
next();
},
// to do after resolve tree
// afterAll catch all middleware errors
afterAll: function (err) {
if (err) { throw err;}
var app = this.tree.get( 'app' ),
http = require('http');
http.createServer( app ).listen( this.config.port );
console.log( 'listening port ' + this.config.port );
}
});
// resolve framework
hardwire.resolve();
© 2015 Jacobo Tabernero - jacoborus
Released under MIT License