diff --git a/templates/common/_package.json b/templates/common/_package.json index 20dc413a9..40db122b7 100644 --- a/templates/common/_package.json +++ b/templates/common/_package.json @@ -2,7 +2,14 @@ "name": "<%= _.slugify(appname) %>", "version": "0.0.0", "dependencies": { - "express": "~3.4.3", + "express": "~4.0.0", + "morgan": "~1.0.0", + "body-parser": "~1.0.0", + "method-override": "~1.0.0", + "static-favicon": "~1.0.1", + "cookie-parser": "~1.0.1", + "express-session": "~1.0.2", + "errorhandler": "~1.0.0", "lodash": "~2.4.1"<% if (mongo) { %>, "mongoose": "~3.8.8"<% } %><% if (mongoPassportUser) { %>, "connect-mongo": "~0.4.0", diff --git a/templates/express/config/express.js b/templates/express/config/express.js index 78f5b7cca..a2e538c34 100644 --- a/templates/express/config/express.js +++ b/templates/express/config/express.js @@ -1,70 +1,75 @@ 'use strict'; var express = require('express'), + favicon = require('static-favicon'), + morgan = require('morgan'), + bodyParser = require('body-parser'), + methodOverride = require('method-override'), + cookieParser = require('cookie-parser'), + session = require('express-session'), + errorHandler = require('errorhandler'), path = require('path'), config = require('./config')<% if (mongoPassportUser) { %>, passport = require('passport'), - mongoStore = require('connect-mongo')(express)<% } %>; + mongoStore = require('connect-mongo')(session)<% } %>; /** * Express configuration */ module.exports = function(app) { - app.configure('development', function(){ - app.use(require('connect-livereload')()); + var env = app.get('env'); - // Disable caching of scripts for easier testing - app.use(function noCache(req, res, next) { - if (req.url.indexOf('/scripts/') === 0) { - res.header('Cache-Control', 'no-cache, no-store, must-revalidate'); - res.header('Pragma', 'no-cache'); - res.header('Expires', 0); - } - next(); - }); + if ('development' === env) { + app.use(require('connect-livereload')()); - app.use(express.static(path.join(config.root, '.tmp'))); - app.use(express.static(path.join(config.root, 'app'))); - app.set('views', config.root + '/app/views'); - }); + // Disable caching of scripts for easier testing + app.use(function noCache(req, res, next) { + if (req.url.indexOf('/scripts/') === 0) { + res.header('Cache-Control', 'no-cache, no-store, must-revalidate'); + res.header('Pragma', 'no-cache'); + res.header('Expires', 0); + } + next(); + }); - app.configure('production', function(){ - app.use(express.favicon(path.join(config.root, 'public', 'favicon.ico'))); - app.use(express.static(path.join(config.root, 'public'))); - app.set('views', config.root + '/views'); - }); + app.use(express.static(path.join(config.root, '.tmp'))); + app.use(express.static(path.join(config.root, 'app'))); + app.set('views', config.root + '/app/views'); + } - app.configure(function(){<% if (!jade) { %> + if ('production' === env) { + app.use(favicon(path.join(config.root, 'public', 'favicon.ico'))); + app.use(express.static(path.join(config.root, 'public'))); + app.set('views', config.root + '/views'); + } + + <% if (!jade) { %> app.engine('html', require('ejs').renderFile); app.set('view engine', 'html');<% } %><% if (jade) { %> app.set('view engine', 'jade');<% } %> - app.use(express.logger('dev')); - app.use(express.json()); - app.use(express.urlencoded()); - app.use(express.methodOverride());<% if(mongoPassportUser) { %> - app.use(express.cookieParser()); + app.use(morgan('dev')); + app.use(bodyParser()); + app.use(methodOverride());<% if(mongoPassportUser) { %> + app.use(cookieParser()); // Persist sessions with mongoStore - app.use(express.session({ - secret: 'angular-fullstack secret', - store: new mongoStore({ - url: config.mongo.uri, - collection: 'sessions' - }, function () { - console.log("db connection open"); - }) + app.use(session({ + secret: 'angular-fullstack secret', + store: new mongoStore({ + url: config.mongo.uri, + collection: 'sessions' + }, function () { + console.log('db connection open'); + }) })); - //use passport session + // Use passport session app.use(passport.initialize()); app.use(passport.session()); <% } %> - // Router (only error handlers should come after this) - app.use(app.router); - }); - // Error handler - app.configure('development', function(){ - app.use(express.errorHandler()); - }); + // Error handler - has to be last + if ('development' === app.get('env')) { + app.use(errorHandler()) + } }; \ No newline at end of file diff --git a/templates/express/routes.js b/templates/express/routes.js index 9e45d31ce..e9782da49 100644 --- a/templates/express/routes.js +++ b/templates/express/routes.js @@ -13,22 +13,30 @@ var middleware = require('./middleware')<% } %>; module.exports = function(app) { // Server API Routes - app.get('/api/awesomeThings', api.awesomeThings); + app.route('/api/awesomeThings') + .get(api.awesomeThings); <% if(mongoPassportUser) { %> - app.post('/api/users', users.create); - app.put('/api/users', users.changePassword); - app.get('/api/users/me', users.me); - app.get('/api/users/:id', users.show); + app.route('/api/users') + .post(users.create), + .put(users.changePassword); + app.route('/api/users/me') + .get(users.me); + app.route('/api/users/:id') + .get(users.show); - app.post('/api/session', session.login); - app.del('/api/session', session.logout);<% } %> + app.route('/api/session') + .post(session.login), + .delete(session.logout);<% } %> // All undefined api routes should return a 404 - app.get('/api/*', function(req, res) { - res.send(404); - }); - + app.route('/api/*') + .get(function(req, res) { + res.send(404); + }); + // All other routes to use Angular routing in app/scripts/app.js - app.get('/partials/*', index.partials); - app.get('/*',<% if(mongoPassportUser) { %> middleware.setUserCookie,<% } %> index.index); + app.route('/partials/*') + .get(index.partials); + app.route('/*') + .get(<% if(mongoPassportUser) { %> middleware.setUserCookie,<% } %> index.index); }; \ No newline at end of file