-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
executable file
·99 lines (89 loc) · 3.19 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
'use strict';
var gulp = require('gulp'),
jade = require('gulp-jade'),
sass = require('gulp-sass'),
sourceMaps = require('gulp-sourcemaps'),
autoPrefixer = require('gulp-autoprefixer'),
imageMin = require('gulp-imagemin'),
imageMinMozJpeg = require('imagemin-mozjpeg'),
newer = require('gulp-newer'),
plumber = require('gulp-plumber'),
prettify = require('gulp-html-prettify'),
browserSync = require('browser-sync').create(),
htmlRoot = '/html';
gulp.task('images', function () {
gulp.src(['./assets/i/*.png', './assets/i/*.gif', './assets/i/*.svg'])
.pipe(plumber())
.pipe(newer('./public/assets/i/'))
.pipe(imageMin({
progressive: true,
interlaced: true,
svgoPlugins: [{removeViewBox: false}, {removeUselessStrokeAndFill: false}]
}))
.pipe(gulp.dest('./public/assets/i/'));
});
gulp.task('mozJpeg', function () {
gulp.src('./assets/i/*.jpg')
.pipe(plumber())
.pipe(newer('./public/assets/i/'))
.pipe(imageMinMozJpeg({quality: 95})())
.pipe(gulp.dest('./public/assets/i/'));
});
gulp.task('sass', function () {
gulp.src('./assets/sass/common.sass')
.pipe(plumber())
.pipe(sourceMaps.init())
.pipe(sass({
compiler: require('node-sass'),
outputStyle: 'compressed'
}).on('error', sass.logError))
.pipe(autoPrefixer({
browsers: ['> 1%', 'last 4 versions', 'Firefox ESR', 'Opera 12.1'],
cascade: false
}))
.pipe(sourceMaps.write('.'))
.pipe(gulp.dest('./public/assets/css'));
});
gulp.task('jade', function () {
gulp.src('./assets/template/*.jade')
.pipe(plumber())
.pipe(jade({
pretty: true
}))
.pipe(prettify({indent_char: ' ', indent_size: 4}))
.pipe(gulp.dest('./public' + htmlRoot));
});
gulp.task('scripts', function () {
gulp.src('./assets/js/**/*.js')
.pipe(plumber())
.pipe(newer('./assets/js/**/*'))
.pipe(gulp.dest('./public/assets/js/'));
});
gulp.task('fonts', function () {
gulp.src('./assets/fonts/**/*')
.pipe(plumber())
.pipe(newer('./assets/fonts/**/*'))
.pipe(gulp.dest('./public/assets/fonts'));
});
gulp.task('bs', function () {
browserSync.init({
server: './public',
directory: true,
open: false,
notification: false,
reloadOnRestart: false,
ghostMode: true,
startPath: 'html/index.html'
});
browserSync.watch('./public/**/*.*').on('change', browserSync.reload);
});
gulp.task('watch', function () {
gulp.watch(['./assets/sass/**/*.sass'], ['sass']);
gulp.watch('./assets/template/**/*.jade', ['jade']);
gulp.watch('./assets/js/**/*.js', ['scripts']);
gulp.watch(['./assets/i/*.png', './assets/i/*.gif', './assets/i/*.svg'], ['images']);
gulp.watch('./assets/i/*.jpg', ['mozJpeg']);
gulp.watch('./assets/fonts/**/*', ['fonts']);
});
gulp.task('build', ['sass', 'jade', 'scripts', 'images', 'mozJpeg', 'fonts']);
gulp.task('default', ['build', 'watch', 'bs']);