Skip to content

Instantly share code, notes, and snippets.

@revington
Last active August 29, 2015 14:15
Show Gist options
  • Save revington/5d7bf7308f74e6a082c1 to your computer and use it in GitHub Desktop.
Save revington/5d7bf7308f74e6a082c1 to your computer and use it in GitHub Desktop.
app bootstrap
"use strict";
var express = require('express'),
nano = require('nano'),
path = require('path'),
compression = require('compression'),
favicon = require('serve-favicon'),
logger = require('morgan'),
cookieParser = require('cookie-parser'),
session = require('express-session'),
bodyParser = require('body-parser'),
http = require('http'),
req = http.IncomingMessage.prototype,
silent = !process.env.DEBUG,
parallel = require('connect-parallel'),
io = require('socket.io'),
db = nano(process.env.COUCH_DB),
app = module.exports = express();
//
req.db = db;
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.disable('x-powered-by');
app.use(favicon(__dirname + '/public/favicon.ico'));
if (process.env.NODE_ENV === 'TEST') {
app.use(logger('dev'));
}
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(cookieParser());
app.use(compression({
threshold: 512
}));
app.use(express['static'](path.join(__dirname, 'public'), {
maxAge: process.env.STATIC_FILES_MAX_AGE
}));
app.use(session({
secret: process.env.COOKIE_SECRET,
saveUninitialized: true,
resave: true,
rolling: true
}));
'use strict';
var http = require('http'),
port = process.env.HTTP_PORT,
server,
app = require('./app');
server = http.createServer(app);
server.listen(port, function () {
console.error("$$project_name listening on port " + port);
});
process.on('uncaughtException', function (err) {
console.error('Uncaught process exception: ' + err);
console.trace(err.stack);
process.exit(1);
});
#!/bin/bash
export STATIC_FILES_MAX_AGE=0;
export PORT=3000
#export DEBUG='*'
export NODE_ENV="TEST"
export COOKIE_SECRET='secret'
export COUCH_DB='http://localhost:5984/$$project_name'
usage() {
cat <<EOF
Usage: start-dev.sh [options]
Options:
-n, --no-nodemon Plain node-server
-h, --help This message.
EOF
}
# parse options
while [[ "$1" =~ ^- ]]; do
case $1 in
-n | --no-nodemon )
no_nodemon=1
;;
-h | --help )
usage
exit
;;
esac
shift
done
trap 'killall' INT
killall() {
trap '' INT TERM # ignore INT and TERM while shutting down
kill -TERM 0 # fixed order, send TERM not INT
}
# Create database
curl -X PUT ${COUCH_DB}
if [[ -z $no_nodemon ]]
then
nodemon --ignore --ignore node_modules/ --ignore */public/* server.js
else
node server.js
fi
#!/bin/bash
read -p "Project name: " answer
project_name="${answer}"
rm -rf .bowerrc bower.json package.json .gitignore public/vendor
mkdir -p lib test public/{vendor,js,css,img} views
cat >> package.json <<EOF
{
"name": "${project_name}",
"main": "app.js",
"scripts": {
"test": "make test --no-print-directory --quiet"
},
"dependencies": {
},
"devDependencies": {
},
"bin": {
"run": "./bin/run"
}
}
EOF
# bower
cat >> .bowerrc <<EOF
{
"directory": "public/vendor"
}
EOF
cat >> bower.json <<EOF
{
"name":"${project_name}",
"dependencies": {
"bootstrap": "latest"
}
}
EOF
cat >> .gitignore <<EOF
.DS_Store
node_modules
EOF
bower install
npm init
npm install --save \
body-parser \
compression \
connect-parallel \
cookie-parser \
express \
express-session \
i18n \
jade \
morgan \
nano \
node-uuid \
serve-favicon \
socket.io \
uglify-js
npm i --save-d \
supertest \
mocha \
mocha-istanbul \
istanbul
sed_cmd="s'\$\$project_name'${project_name}'g"
curl https://gist.githubusercontent.com/revington/5d7bf7308f74e6a082c1/raw/server.js | sed "${sed_cmd}" > server.js
curl https://gist.githubusercontent.com/revington/5d7bf7308f74e6a082c1/raw/app.js | sed "${sed_cmd}" > app.js
curl https://gist.githubusercontent.com/revington/5d7bf7308f74e6a082c1/raw/start-dev.sh | sed "${sed_cmd}" > start-dev.sh
chmod +x start-dev.sh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment