forked from mozillascience/software-discovery-dashboard
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
88 lines (75 loc) · 2.66 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
const gulp = require('gulp'),
nodemon = require('gulp-nodemon'),
livereload = require('gulp-livereload'),
sass = require('gulp-sass'),
babel = require('gulp-babel'),
del = require('del'),
runSequence = require('run-sequence'),
cache = require('gulp-cached'),
jshint = require('gulp-jshint');
gulp.task('watch', function() {
livereload.listen();
gulp.watch('public/stylesheets/*.scss', ['sassBuild']);
gulp.watch(['**/*.js', '!node_modules/**', '!bower_components/**', '!build/**'], ['jsBuild']);
gulp.watch('views/**/*.jade', ['moveViews']);
});
gulp.task('liveResetting', function() {
return nodemon({
script: 'build/bin/www',
ext: 'js jade css',
watch: ['build/'],
stdout: false
}).on('readable', function () {
this.stdout.on('data', function (chunk) {
if(/^Express server listening on port/.test(chunk)){
livereload.changed(__dirname);
}
});
this.stdout.pipe(process.stdout);
this.stderr.pipe(process.stderr);
});
});
gulp.task('jsHint', function() {
return gulp.src(['**/*.js', '!node_modules/**', '!bower_components/**', '!build/**'])
.pipe(jshint({esnext: true}))
.pipe(jshint.reporter('default'));
});
gulp.task('moveViews', function() {
return gulp.src('views/**/*.jade')
.pipe(cache('moveViews'))
.pipe(gulp.dest('build/views'));
});
gulp.task('sassBuild', function() {
return gulp.src('public/stylesheets/**/*.scss')
.pipe(sass().on('error', sass.logError))
.pipe(cache('sassBuild'))
.pipe(gulp.dest('build/public/stylesheets'));
});
gulp.task('jsBuild', function() {
return gulp.src(['**/*.js', '!node_modules/**', '!bower_components/**', '!build/**'])
.pipe(cache('jsBuild'))
.pipe(babel())
.pipe(gulp.dest('build'));
});
gulp.task('imgMove', function() {
return gulp.src('public/images/**/*')
.pipe(cache('imgMove'))
.pipe(gulp.dest('build/public/images'));
});
gulp.task('clean', function(callback) {
cache.caches = {};
return del(['build/**/*'], callback);
});
gulp.task('build', function(callback) {
return runSequence('clean', ['jsBuild', 'sassBuild', 'imgMove', 'moveViews'], callback);
});
gulp.task('productionBuild', function(callback) {
return runSequence('build', 'moveDependencies', callback);
});
gulp.task('moveDependencies', function(callback) {
return gulp.src(['node_modules/**/*', 'bower_components/**/*'], {base: './'})
.pipe(gulp.dest('build'));
});
gulp.task('develop', function(callback) {
return runSequence('build', 'watch', 'liveResetting', callback);
});