-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathgulpfile.js
107 lines (97 loc) · 3.01 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
// Require plugins
var gulp = require('gulp'),
autoprefixer = require('gulp-autoprefixer'),
chmod = require('gulp-chmod'),
concat = require('gulp-concat'),
connect = require('gulp-connect'),
data = require('gulp-data'),
fs = require('fs'),
imagemin = require('gulp-imagemin'),
jade = require('gulp-jade'),
plumber = require('gulp-plumber'),
rename = require('gulp-rename'),
sass = require('gulp-sass'),
sourcemaps = require('gulp-sourcemaps'),
uglify = require('gulp-uglify'),
util = require('gulp-util');
var config = {
src: 'src/',
dest: 'dist/',
sassPattern: 'sass/**/*.+(sass|scss)',
jsPattern: 'js/**/*.js',
jadePattern: 'jade/**/*.jade',
imgPattern: 'img/**/*',
production: !!util.env.production // Those two exclamations turn undefined into a proper false.
};
// Tasks
gulp.task('html', function(){
gulp.src(config.src + 'jade/**/!(_)*.jade')
.pipe(plumber())
.pipe(data(function(file){
return JSON.parse(fs.readFileSync(config.src + 'db.json'));
}))
.pipe(jade({
pretty: config.production ? false : true
}))
.pipe(gulp.dest(config.dest));
});
gulp.task('css', function(){
gulp.src(config.src + 'sass/style.+(sass|scss)')
.pipe(plumber())
.pipe(config.production ? util.noop() : sourcemaps.init())
.pipe(sass({
outputStyle: (config.production ? 'compressed' : 'nested')
}))
.pipe(rename({
suffix: '.min'
}))
.pipe(autoprefixer({
browsers: ['last 5 versions']
}))
.pipe(config.production ? util.noop() : sourcemaps.write())
.pipe(gulp.dest(config.dest + 'css'));
});
gulp.task('js', function(){
return gulp.src([
config.src + 'js/0-vendor/jquery.min.js',
config.src + 'js/1-modules/randomator.js',
config.src + 'js/1-modules/sidebar.js',
config.src + 'js/1-modules/player.js',
config.src + 'js/script.js'
])
.pipe(plumber())
.pipe(concat('script.min.js'))
.pipe(config.production ? uglify() : util.noop())
.pipe(gulp.dest(config.dest + 'js'));
});
gulp.task('jquery', function() {
return gulp.src(config.src + 'js/0-vendor/jquery.min.js')
.pipe(gulp.dest(config.dest + 'js'));
});
gulp.task('img', function(){
return gulp.src(config.src + config.imgPattern)
.pipe(imagemin({
progressive: true
}))
.pipe(chmod(666))
.pipe(gulp.dest(config.dest + 'img'));
});
gulp.task('db', function(){
return gulp.src(config.src + 'db.json')
.pipe(gulp.dest(config.dest));
});
gulp.task('server', function(){
connect.server({
root: config.dest,
port: 8000
});
});
// Watch task
gulp.task('watch', function(){
gulp.watch(config.src + config.jadePattern, ['html']);
gulp.watch(config.src + config.sassPattern, ['css']);
gulp.watch(config.src + config.jsPattern, ['js']);
});
// Default task
gulp.task('default', ['html', 'css', 'js', 'jquery', 'img', 'db', 'server', 'watch']);
gulp.task('build', ['html', 'css', 'js', 'jquery', 'img', 'db']);