From 6ed5c5e8e0529357da622175eb22b3a181da16e5 Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Mon, 22 Dec 2014 13:38:48 -0800 Subject: [PATCH] add git gulp and browser-sync which still is not working properly --- app.js | 14 ++++++++++++- gulpfile.js | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++-- package.json | 6 +++++- 3 files changed, 73 insertions(+), 4 deletions(-) diff --git a/app.js b/app.js index 1d9e9b0274f..cb0abde4607 100644 --- a/app.js +++ b/app.js @@ -3,6 +3,7 @@ */ require('newrelic'); var express = require('express'); +var debug = require('debug')('freecc:server'); var cookieParser = require('cookie-parser'); var compress = require('compression'); var session = require('express-session'); @@ -105,13 +106,24 @@ var trusted = [ "'unsafe-eval'", "'unsafe-inline'" ]; +//var connectSrc; +//if (process.env.NODE_ENV === 'development') { +// debug('Pushing'); +// connectSrc = ['"self"', 'ws://localhost:3001/']; +//} else { +// debug('Not'); +// connectSrc = []; +//} + +debug(trusted); app.use(helmet.contentSecurityPolicy({ defaultSrc: trusted, scriptSrc: ['*.optimizely.com'].concat(trusted), + 'connect-src': process.env.NODE_ENV === 'development' ? ['ws://localhost:3001/', 'http://localhost:3001/'] : [], styleSrc: trusted, imgSrc: ['*.evernote.com', '*.amazonaws.com', "data:"].concat(trusted), fontSrc: ["'self", '*.googleapis.com'].concat(trusted), - mediaSrc: ['*.amazonaws.com', '*.twitter'], + mediaSrc: ['*.amazonaws.com', '*.twitter.com'], frameSrc: ['*.gitter.im', '*.vimeo.com', '*.twitter.com'], // sandbox: ['allow-forms', 'allow-scripts'], // reportUri: '/report-violation', diff --git a/gulpfile.js b/gulpfile.js index 787d3046646..faf61f73391 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,7 +1,16 @@ var gulp = require('gulp'), - bower = require('bower-main-files'), - inject = require('gulp-inject'); + debug = require('debug')('freecc:gulp'), + bower = require('bower-main-files'), + nodemon = require('gulp-nodemon'), + sync = require('browser-sync'), + reload = sync.reload, + inject = require('gulp-inject'), + reloadDelay = 7000; +var paths = { + server: './app.js', + serverIgnore: [], +} gulp.task('inject', function() { gulp.src('views/home.jade') .pipe(inject(gulp.src(bower()), { @@ -10,4 +19,48 @@ gulp.task('inject', function() { .pipe(gulp.dest('views')); }); +gulp.task('serve', function(cb) { + var called = false; + nodemon({ + script: paths.server, + ext: '.js', + ignore: paths.serverIgnore, + env: { + 'NODE_ENV': 'development', + 'DEBUG': 'freecc:*' + } + }) + .on('start', function() { + if (!called) { + called = true; + setTimeout(function() { + cb(); + }, reloadDelay); + } + }) + .on('restart', function(files) { + if (files) { + debug('Files that changes: ', files); + } + setTimeout(function() { + debug('Restarting browsers'); + reload(); + }, reloadDelay); + }); +}); +gulp.task('sync', ['serve'], function() { + sync.init(null, { + proxy: 'http://localhost:3000', + logLeval: 'debug', + files: [ + 'public/**/*', + ], + port: 3001, + open: true, + browser: ['safari', 'google chrome'], + reloadDelay: reloadDelay + }); +}); + +gulp.task('default', ['serve', 'sync']); diff --git a/package.json b/package.json index 8a798e1329d..107a6286b34 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "cookie-parser": "^1.3.3", "csso": "^1.3.11", "dateformat": "^1.0.11", + "debug": "^2.1.0", "dotenv": "^0.4.0", "errorhandler": "^1.3.0", "express": "^4.10.4", @@ -65,9 +66,12 @@ }, "devDependencies": { "blessed": "^0.0.37", + "bower-main-files": "0.0.4", + "browser-sync": "^1.8.1", + "chai": "^1.10.0", "gulp": "^3.8.8", "gulp-inject": "^1.0.2", - "chai": "^1.10.0", + "gulp-nodemon": "^1.0.4", "mocha": "^2.0.1", "multiline": "^1.0.1", "supertest": "^0.15.0"