-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
104 lines (92 loc) · 3.12 KB
/
gulpfile.js
File metadata and controls
104 lines (92 loc) · 3.12 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
var gulp = require('gulp'),
browserify = require('browserify'),
glob = require('glob'),
es = require('event-stream'),
source = require("vinyl-source-stream"),
poststylus = require('poststylus'),
rucksack = require('rucksack-css'),
lost = require('lost'),
rupture = require('rupture'),
autoprefixer = require('autoprefixer-stylus'),
plugins = require('gulp-load-plugins')({
camelize: false
});
var config = {
dev: "app/src/",
dest: "public/assets/",
production: false
};
var tasks = {
compileCss: function(){
return gulp.src(config.dev + "styles/*.styl")
.pipe(plugins.plumber({
errorHandler:function(err){
console.log(err);
this.emit('end');
}
}))
.pipe(plugins.stylint())
.pipe(plugins.stylus({
use: [poststylus(rucksack), poststylus('lost'), autoprefixer(), rupture()],
compress: config.production
}))
.pipe(gulp.dest(config.dest + "styles/"));
},
lintCss: function(){
return gulp.src(config.dest + "styles/*.css")
.pipe(plugins.csslint("csslintrc.json"))
.pipe(plugins.csslint.reporter());
},
bundleJs: function(done){
glob(config.dev + "js/*.js", function(err, files){
if (err) { throw err;}
var bundles = files.map(function(file){
var bundle = browserify(file, {debug: true})
.bundle();
return bundle
.pipe(plugins.plumber())
.pipe(source(file.replace(config.dev + "js/", "")))
.pipe(config.production === true ? plugins.streamify(plugins.uglify()) : plugins.util.noop())
.pipe(gulp.dest(config.dest + "js/"));
});
es.merge(bundles).on("end", done);
});
},
lintJs: function(){
return gulp.src([
"gulpfile.js",
config.dev + "js/**/**/*.js",
config.dev + "js/**/*.js",
config.dev + "js/*.js"
])
.pipe(plugins.plumber())
.pipe(plugins.jshint())
.pipe(plugins.jshint.reporter('default'));
},
optimizeImages: function(){
return gulp.src(config.dev + "images/**/*.*")
.pipe(plugins.imagemin({
progressive: true,
optimizationLevel: 7,
multipass: true
}))
.pipe(gulp.dest(config.dest + 'images/'));
}
};
gulp.task("compileCss", tasks.compileCss);
gulp.task("bundleJs", tasks.bundleJs);
gulp.task("lintCss", tasks.lintCss);
gulp.task("lintJs", tasks.lintJs);
gulp.task("optimizeImages", tasks.optimizeImages);
gulp.task("build", function(done){
config.production = true;
tasks.bundleJs(done);
tasks.compileCss();
tasks.optimizeImages();
});
gulp.task('default', ['watch']);
gulp.task('watch', ['compileCss', "bundleJs"], function(){
gulp.watch(config.dev + "styles/**/*.styl", ["lintCss","compileCss"]);
gulp.watch(config.dev + "js/**/*.js", ["lintJs", "bundleJs"]);
});
gulp.task('debug', ["lintCss", "lintJs"]);