-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathgulpfile.js
145 lines (123 loc) · 6.75 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
141
142
143
144
145
// 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')(require('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
//——————————————————————————————————————————————————————————————————————————————
function bsTask() {
bs({
proxy: 'localhost:' + port,
files: 'css/*.css',
open: false,
ghostMode: false // ghostMode is incompatible with bustashape's socket data.
});
};
bsTask.description = 'Runs browser-sync and listens for changes to CSS';
module.exports.bs = bsTask;
//——————————————————————————————————————————————————————————————————————————————
// Sass Task
//
// Compiles Sass and runs the CSS through autoprefixer.
//——————————————————————————————————————————————————————————————————————————————
function sassTask() {
bs.notify('<span style="color: grey">Running:</span> Sass task');
return gulp.src('sass/**/*.scss')
.pipe(plumber())
.pipe(sass()
.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}));
};
sassTask.description = 'Compiles sass';
module.exports.sass = sassTask;
//——————————————————————————————————————————————————————————————————————————————
// JS task
//——————————————————————————————————————————————————————————————————————————————
function jsTask() {
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);
};
jsTask.description = 'Bundles and minifies JS';
module.exports.js = jsTask;
//——————————————————————————————————————————————————————————————————————————————
// Prep images
//——————————————————————————————————————————————————————————————————————————————
function imgTask() {
return gulp.src('img/*')
.pipe(gulp.dest('_public/img'));
};
imgTask.description = 'Copies images to public directory.';
module.exports.img = imgTask;
//——————————————————————————————————————————————————————————————————————————————
// Build all the assets
//——————————————————————————————————————————————————————————————————————————————
gulp.task('build', gulp.series(sassTask, jsTask, imgTask));
//——————————————————————————————————————————————————————————————————————————————
// Watch tasks
//——————————————————————————————————————————————————————————————————————————————
gulp.task('watch', () => {
gulp.watch('sass/**/*', gulp.series(sassTask));
gulp.watch('js/**/*', gulp.series(jsTask));
});
//——————————————————————————————————————————————————————————————————————————————
// Run the dev server
//——————————————————————————————————————————————————————————————————————————————
gulp.task('start', gulp.parallel(sassTask, jsTask, imgTask, 'watch', bsTask, () => {
nodemon({
script: 'index.js',
ext: 'html dust js json',
env: { 'NODE_ENV': env }
});
}));
//——————————————————————————————————————————————————————————————————————————————
// Default should just start the server
//——————————————————————————————————————————————————————————————————————————————
gulp.task('default', gulp.series('start'));