Last active
August 29, 2015 14:15
-
-
Save revington/5d7bf7308f74e6a082c1 to your computer and use it in GitHub Desktop.
app bootstrap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"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 | |
})); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'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); | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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