-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathgulpfile.js
More file actions
106 lines (89 loc) · 2.96 KB
/
Copy pathgulpfile.js
File metadata and controls
106 lines (89 loc) · 2.96 KB
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
var gulp = require('gulp'),
gutil = require('gulp-util'),
watch = require('gulp-watch'),
jade = require('gulp-jade'),
stylus = require('gulp-stylus'),
autoprefixer = require('gulp-autoprefixer'),
uglify = require('gulp-uglify'),
livereload = require('gulp-livereload'),
server = require('tiny-lr')();
connect = require('connect'),
http = require('http'),
path = require('path'),
open = require('open'),
through = require('through'),
Twitter = require('ntwitter'),
ghpages = require('gh-pages'),
_ = require('lodash'),
fs = require('fs'),
path = require('path'),
isDev = process.argv.indexOf('dev') >= 0,
livereloadIfDevMode = function (stream) {
return isDev ? livereload(server) : through();
},
watchableSrc = function(glob) {
return isDev ? watch(glob) : gulp.src(glob);
};
gulp.task('scripts', function() {
watchableSrc('src/scripts/**/*.js')
.pipe(uglify())
.pipe(gulp.dest('public/scripts'))
.pipe(livereloadIfDevMode());
});
gulp.task('copy', function() {
gulp.src('CNAME')
.pipe(gulp.dest('public'));
gulp.src('src/favicon.ico')
.pipe(gulp.dest('public'));
watchableSrc('src/images/**')
.pipe(gulp.dest('public/images'))
.pipe(livereloadIfDevMode());
watchableSrc('bower_components/**')
.pipe(gulp.dest('public/bower_components'))
.pipe(livereloadIfDevMode());
});
gulp.task('compile', function() {
watchableSrc('src/**/*.jade')
.pipe(jade({
data: {
speakers: require('./data/speakers.json'),
avatars: require('./data/avatars.json')
}
}))
.pipe(gulp.dest('public'))
.pipe(livereloadIfDevMode());
watchableSrc('src/styles/**/*.styl')
.pipe(stylus())
.pipe(autoprefixer('last 2 versions'))
.pipe(gulp.dest('public/styles'))
.pipe(livereloadIfDevMode());
});
gulp.task('default', ['scripts', 'compile', 'copy']);
gulp.task('serve', ['default'], function() {
// Start LiveReload server
var LIVERELOAD_PORT = 35729;
server.listen(LIVERELOAD_PORT);
// Start Connect server
var CONNECT_PORT = 8000,
app = connect()
.use(require('connect-livereload')({ port: LIVERELOAD_PORT }))
.use(connect.static('public'));
http.createServer(app).listen(CONNECT_PORT);
// Open local server in browser
open('http://localhost:' + CONNECT_PORT);
});
gulp.task('dev', ['serve']);
gulp.task('avatars', function(done) {
var handles = _.pluck(require('./data/speakers.json'), 'twitter'),
twitter = new Twitter(require('./data/twitter.json'));
twitter.showUser(handles, function(err, users) {
var data = {};
users.forEach(function(user) {
data[user.screen_name] = user.profile_image_url.replace('_normal.', '_reasonably_small.');
});
fs.writeFile(path.join(__dirname, 'data/avatars.json'), JSON.stringify(data, null, 2), done);
});
});
gulp.task('deploy', ['default'], function(done) {
ghpages.publish(path.join(__dirname, 'public'), { logger: gutil.log, message: 'Updates --skip-ci' }, done);
});