diff options
| -rw-r--r-- | .bowerrc | 3 | ||||
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | Gruntfile.js | 93 | ||||
| -rwxr-xr-x | bin/app.js | 33 | ||||
| -rwxr-xr-x | config/main.js | 13 | ||||
| -rwxr-xr-x | config/rendering.js | 18 | ||||
| -rwxr-xr-x | config/routes.js | 5 | ||||
| -rwxr-xr-x | controllers/index.js | 4 | ||||
| -rw-r--r-- | package.json | 26 |
9 files changed, 197 insertions, 0 deletions
diff --git a/.bowerrc b/.bowerrc new file mode 100644 index 0000000..1e6420b --- /dev/null +++ b/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "lib/vendor" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cc1ea69 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +public/vendor/* diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..44a2ca7 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,93 @@ +module.exports = function(grunt) { + // 1. All configuration goes here + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + express: { + options: { + // Override the command used to start the server. + // (do not use 'coffee' here, the server will not be able to restart + // see below at opts for coffee-script support) + cmd: process.argv[0], + + // Will turn into: `node OPT1 OPT2 ... OPTN path/to/server.js ARG1 ARG2 ... ARGN` + // (e.g. opts: ['node_modules/coffee-script/bin/coffee'] will correctly parse coffee-script) + opts: [ ], + args: [ ], + + // Setting to `false` will effectively just run `node path/to/server.js` + background: true, + + // Called when the spawned server throws errors + fallback: function() {}, + + // Override node env's PORT +// port: 3000, + + // Override node env's NODE_ENV +// node_env: undefined, + + // Consider the server to be "running" after an explicit delay (in milliseconds) + // (e.g. when server has no initial output) + delay: 0, + + // Regular expression that matches server output to indicate it is "running" + output: ".+", + + // Set --debug (true | false | integer from 1024 to 65535, has precedence over breakOnFirstLine) + debug: false, + + // Set --debug-brk (true | false | integer from 1024 to 65535) + breakOnFirstLine: false, + + // Object with properties `out` and `err` both will take a path to a log file and + // append the output of the server. Make sure the folders exist. + logs: undefined + }, + dev: { + options: { + script: 'bin/app.js' + } + }, +// prod: { +// options: { +// script: 'path/to/prod/server.js', +// node_env: 'production' +// } +// }, +// test: { +// options: { +// script: 'path/to/test/server.js' +// } +// } + }, + watch: { + options: { + livereload: true + }, + webserver: { + files: [ 'bin/app.js', 'config/*' ], + tasks: [ 'express:dev' ], + options: { + spawn: false + } + }, +// less: { +// files: ["public/**/*.less"], +// tasks: ["less"], +// options: { +// livereload: false +// } +// }, + public: { + files: ["public/**/*.css", "public/**/*.js"] + } + } + }); + + // 3. Where we tell Grunt we plan to use this plug-in. + grunt.loadNpmTasks('grunt-express-server'); + grunt.loadNpmTasks('grunt-contrib-watch'); + // 4. Where we tell Grunt what to do when we type "grunt" into the terminal. + grunt.registerTask('default', ['express','watch']); + +}; diff --git a/bin/app.js b/bin/app.js new file mode 100755 index 0000000..842707f --- /dev/null +++ b/bin/app.js @@ -0,0 +1,33 @@ +var express = require('express'),
+ expressValidator = require('express-validator'),
+ fs = require('fs-extra'),
+ morgan = require('morgan'),
+ multer = require('multer'),
+ cookieParser = require('cookie-parser'),
+ bodyParser = require('body-parser'),
+ cookieSession = require('cookie-session');
+var config = require('../config/main');
+
+var app = express();
+app.use(morgan('combined'));
+app.use(bodyParser.json()); // for parsing application/json
+app.use(multer({inMemory: true}));
+app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
+app.use(expressValidator());
+app.use(cookieParser());
+app.use(cookieSession({secret: 'app_1'}));
+app.use(express.static('../public'));
+app.use(express.static('../public/vendor'));
+//app.use(express.favicon(__dirname + '/public/images/shortcut-icon.png'));
+//app.use(messages());
+
+app.set('view engine', 'html');
+app.set('views', __dirname + '/views');
+
+// view caching
+app.set('view cache', false);
+
+require('../config/routes')(app);
+app.listen(config.webserver_port, function(){
+ console.log('Listening on port '+config.webserver_port);
+});
diff --git a/config/main.js b/config/main.js new file mode 100755 index 0000000..a3780c3 --- /dev/null +++ b/config/main.js @@ -0,0 +1,13 @@ +module.exports = { + webserver_port : 2015, + sql : { + client: 'mysql', + connection: { + host : 'localhost', + port : 3306, + user : 'test2', + password : 'test2', + database : 'test2' + } + }, +} diff --git a/config/rendering.js b/config/rendering.js new file mode 100755 index 0000000..46c3324 --- /dev/null +++ b/config/rendering.js @@ -0,0 +1,18 @@ +module.exports = {
+
+ // Useful with RESTful APIs. Allows you to either send json response or html
+ // var rendering = require('./util/rendering');
+ // rendering.render(req, res, data);
+ render: function(req, res, data) {
+ res.header("Access-Control-Allow-Origin", "*");
+ res.header("Access-Control-Allow-Headers", "X-Requested-With");
+
+ if(/application\/json/.test(req.get('accept'))) {
+ res.json(data);
+ } else {
+ res.render('data/basic', {
+ data: data
+ });
+ }
+ }
+}
diff --git a/config/routes.js b/config/routes.js new file mode 100755 index 0000000..6ba6084 --- /dev/null +++ b/config/routes.js @@ -0,0 +1,5 @@ +var indexController = require('../controllers/index');
+
+module.exports = function (app, passport) {
+ app.get('/', indexController.main);
+}
diff --git a/controllers/index.js b/controllers/index.js new file mode 100755 index 0000000..71ca5d4 --- /dev/null +++ b/controllers/index.js @@ -0,0 +1,4 @@ +var rendering = require('../config/rendering');
+exports.main = function(req, res) {
+ res.json('hello world');
+}
diff --git a/package.json b/package.json new file mode 100644 index 0000000..cd5298c --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "grunt_server_experiment", + "version": "1.0.0", + "description": "", + "main": "Gruntfile.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-watch": "^0.6.1", + "grunt-express-server": "^0.4.19" + }, + "dependencies": { + "body-parser": "^1.10.0", + "cookie-parser": "^1.3.3", + "cookie-session": "^1.1.0", + "express": "^4.10.4", + "express-validator": "^2.7.0", + "fs-extra": "^0.12.0", + "morgan": "^1.5.0", + "multer": "^0.1.6" + } +} |
