forked from rupl/bustashape
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
140 lines (117 loc) · 6.42 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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
// Node
var env = process.env.NODE_ENV || 'local';
var port = process.env.PORT || 5000;
// Gulp tools
var gulp = require('gulp');
var u = require('gulp-util');
var log = u.log;
var c = u.colors;
var plumber = require('gulp-plumber');
var merge = require('merge-stream');
// Project deps
var nodemon = require('gulp-nodemon');
var sass = require('gulp-sass');
var prefix = require('gulp-autoprefixer');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var bs = require('browser-sync');
var reload = bs.reload;
// Deployment debugging
log(c.yellow('Detected environment:'), c.bgYellow.black(' ' + env + ' '));
//——————————————————————————————————————————————————————————————————————————————
// Browser Sync
//——————————————————————————————————————————————————————————————————————————————
gulp.task('bs', function() {
bs({
proxy: 'localhost:' + port,
files: 'css/*.css',
open: false,
ghostMode: false // ghostMode is incompatible with bustashape's socket data.
});
});
//——————————————————————————————————————————————————————————————————————————————
// Sass Task
//
// Compiles Sass and runs the CSS through autoprefixer.
//——————————————————————————————————————————————————————————————————————————————
gulp.task('sass', function() {
bs.notify('<span style="color: grey">Running:</span> Sass task');
return gulp.src('sass/**/*.scss')
.pipe(plumber())
.pipe(sass({
outputStyle: 'nested',
})
.on('error', function(err, res) {
log(c.red('sass'), 'failed to compile');
log(c.red('> ') + err.message);
bs.notify('<span style="color: red">Sass failed to compile</span>');
})
)
.pipe(prefix('last 2 versions', '> 1%'))
.pipe(gulp.dest('_public/css'))
.pipe(reload({stream:true}));
});
//——————————————————————————————————————————————————————————————————————————————
// JS task
//——————————————————————————————————————————————————————————————————————————————
gulp.task('js', function() {
bs.notify('<span style="color: grey">Running:</span> JS tasks');
var bootstrap = gulp.src([
'js/modernizr.min.js',
'js/hammer.min.js',
'js/utils.js',
'js/socket.js',
])
.pipe(plumber())
.pipe(concat('bootstrap.min.js'))
.pipe(uglify())
.pipe(gulp.dest('_public/js'));
var ui = gulp.src([
'node_modules/two.js/build/two.js',
'js/tween-old.js',
'js/zui.js',
'js/client.js',
'js/login.js',
'js/canvas.js',
'js/controls.js',
'js/shapes.js',
])
.pipe(plumber())
.pipe(concat('ui.min.js'))
.pipe(uglify())
.pipe(gulp.dest('_public/js'))
.pipe(reload({stream: true}));
return merge(bootstrap, ui);
});
//——————————————————————————————————————————————————————————————————————————————
// Prep images
//——————————————————————————————————————————————————————————————————————————————
gulp.task('img', function() {
return gulp.src('img/*')
.pipe(gulp.dest('_public/img'));
});
//——————————————————————————————————————————————————————————————————————————————
// Build all the assets
//——————————————————————————————————————————————————————————————————————————————
gulp.task('build', ['sass', 'js', 'img']);
//——————————————————————————————————————————————————————————————————————————————
// Watch tasks
//——————————————————————————————————————————————————————————————————————————————
gulp.task('watch', function() {
gulp.watch('sass/**/*', ['sass']);
gulp.watch('js/**/*', ['js']);
});
//——————————————————————————————————————————————————————————————————————————————
// Run the dev server
//——————————————————————————————————————————————————————————————————————————————
gulp.task('start', ['sass', 'js', 'img', 'watch', 'bs'], function () {
nodemon({
script: 'index.js',
ext: 'html dust js json',
env: { 'NODE_ENV': env }
});
});
//——————————————————————————————————————————————————————————————————————————————
// Default should just start the server
//——————————————————————————————————————————————————————————————————————————————
gulp.task('default', ['start']);