-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathgulpfile.js
124 lines (101 loc) · 3.17 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
var gulp = require('gulp');
var gutil = require('gulp-util');
var open = require('gulp-open');
var watch = require('gulp-watch');
var concat = require('gulp-concat');
var plumber = require('gulp-plumber');
var sys = require('sys');
// var exec = require('child_process').exec;
var express = require('express');
var tiny_lr = require('tiny-lr')();
var serve_index = require('serve-index');
var connect_livereload = require('connect-livereload');
// ----------------------------------------------------------------------------
// Config
var EXPRESS_PORT = 8080;
var EXPRESS_ROOT = __dirname;
var LIVERELOAD_PORT = 35729;
var APP_ROOT = '.';
var lr_files = [
APP_ROOT + '/**/*.html',
APP_ROOT + '/**/*.js',
APP_ROOT + '/**/*.css',
'!' + APP_ROOT + '/node_modules/**/*.*',
'!' + APP_ROOT + '/bootstrap.js',
'!' + APP_ROOT + '/gulpfile.js',
];
function shellCmd(error, stdout, stderr) { sys.puts(stdout); }
var io;
// function broadcast()
// {
// console.log('Trigger Firefox Addon CSS Update!');
// io.sockets.emit('update');
// }
// ----------------------------------------------------------------------------
// Gulp tasks
gulp.task('default', ['server', 'socket-io', 'open', 'watch'], function() {});
gulp.task('socket-io', function() {
var app = require('express')();
var server = require('http').Server(app);
io = require('socket.io')(server);
server.listen(8888);
app.use(express.static(__dirname + '/data/socket.io'));
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function (socket) {
console.log('connected', socket.id);
socket.on('request', function (data) {
socket.emit('update');
});
});
});
gulp.task('server', function() {
var app = express();
app.use(connect_livereload({
port: LIVERELOAD_PORT
}));
// TODO inspect how to list files from directories
app.use(serve_index(__dirname + '/' + APP_ROOT, {'icons': true}));
app.use(express.static(__dirname + '/' + APP_ROOT));
app.listen(EXPRESS_PORT);
});
gulp.task('open', function() {
var options = {
url: 'http://localhost:' + EXPRESS_PORT,
app: 'firefox'
};
gulp.src(__filename).pipe(open('', options));
});
// ----------------------------------------------------------------------------
// Concat CSS
gulp.task('css', function(event) {
var stream = gulp.src('dev/css/**/*.css')
.pipe(plumber())
.pipe(concat('session-sync.css'))
.pipe(gulp.dest(APP_ROOT + '/data'));
return stream;
});
// ----------------------------------------------------------------------------
// Watch + LiveReload
gulp.task('watch', ['livereload'], function() {
watch(lr_files, notifyLivereload);
watch('./dev/css/**/*.css', function(events, done) {
console.log('Message', done);
gulp.start('css', function() {
// broadcast();
});
});
});
gulp.task('livereload', function() {
tiny_lr.listen(LIVERELOAD_PORT);
});
function notifyLivereload(event) {
var fileName = require('path').relative(EXPRESS_ROOT, event.path);
tiny_lr.changed({
body: {
files: [fileName]
}
});
gutil.log('[' + event.event + '] :', gutil.colors.cyan(fileName));
}