-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathgulpfile.js
More file actions
93 lines (81 loc) · 2.35 KB
/
gulpfile.js
File metadata and controls
93 lines (81 loc) · 2.35 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
var gulp = require('gulp');
var uglify = require('gulp-uglify');
var browserify = require('gulp-browserify');
var del = require('del');
var rename = require('gulp-rename');
var nodemon = require('gulp-nodemon');
var jshint = require('gulp-jshint');
var react = require('gulp-react');
var sass = require('gulp-sass');
var gzip = require('gulp-gzip');
var _ = require('lodash');
var paths = {
client: ['./lib/client/**/*.js', './lib/client/**/*.jsx'],
jsDist: './public/js/',
cssDist: './public/css/',
scss: './lib/scss/**/*.scss',
app: './lib/app/**/*.js'
};
gulp.task('cleanJS', function(cb) {
del([paths.jsDist], cb);
});
gulp.task('cleanCSS', function(cb) {
del([paths.cssDist], cb);
});
gulp.task('compress', ['compressedClient'], function() {
gulp.src(paths.jsDist)
.pipe(uglify())
.pipe(gzip())
.pipe(gulp.dest(paths.jsDist));
});
gulp.task('sass', ['cleanCSS'], function () {
gulp.src(paths.scss)
.pipe(sass({
errLogToConsole: true,
style: 'compressed',
includePaths: [
'./bower_components/bootstrap-sass/assets/stylesheets/'
]
}))
.pipe(gulp.dest(paths.cssDist));
});
function compileClientJs (brsfyOpts) {
return gulp.src(paths.client, { read: false })
.pipe(browserify(_.extend({
transform: ['reactify', 'debowerify'],
extensions: ['.jsx', '.js']
},
brsfyOpts
)))
.pipe(rename('app.js'))
.pipe(gulp.dest('public/js'));
}
gulp.task('compressedClient', ['cleanJS'], function() {
return compileClientJs({ fullPaths: false, debug: false });
});
gulp.task('client', ['cleanJS'], function() {
return compileClientJs({ fullPaths: true, debug: true });
});
gulp.task('watch', function() {
gulp.watch(paths.client, ['client', 'lint']);
gulp.watch(paths.scss, ['sass']);
});
gulp.task('lint', function () {
gulp.src([paths.app].concat(paths.client))
.pipe(react())
.pipe(jshint())
.on('error', function(err) {
console.error('JSX ERROR in ' + err.fileName);
console.error(err.message);
this.end();
})
.pipe(jshint.reporter('default'));
});
gulp.task('app', function () {
nodemon({ script: 'scripts/server.js', ext: 'html js', watch: paths.app })
.on('change', ['lint'])
.on('restart', function () {
console.log('restarted!');
});
});
gulp.task('default', ['watch', 'client', 'app', 'sass', 'lint']);