-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
123 lines (113 loc) · 2.59 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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import gulp from "gulp";
import plumber from "gulp-plumber";
import sourcemap from "gulp-sourcemaps";
import rename from "gulp-rename";
import less from "gulp-less";
import postcss from "gulp-postcss";
import autoprefixer from "autoprefixer";
import csso from "gulp-csso";
import imagemin from "gulp-imagemin";
import gulpwebp from "gulp-webp";
import svgstore from "gulp-svgstore";
import posthtml from "gulp-posthtml";
import include from "posthtml-include";
import del from "del";
import browsersync from "browser-sync";
import imageminmozjpeg from "imagemin-mozjpeg";
const styles = () => {
return gulp
.src("source/less/style.less")
.pipe(plumber())
.pipe(sourcemap.init())
.pipe(less())
.pipe(postcss([autoprefixer()]))
.pipe(csso())
.pipe(rename("style.min.css"))
.pipe(sourcemap.write("."))
.pipe(gulp.dest("build/css"))
.pipe(browsersync.stream());
};
const images = () => {
return gulp
.src("source/img/**/*.{png,jpg,svg}")
.pipe(
imagemin([
imagemin.optipng({
optimizationLevel: 3,
}),
imageminmozjpeg({
progressive: true,
quality: 75,
}),
imagemin.svgo(),
])
)
.pipe(gulp.dest("source/img"));
};
const webp = () => {
return gulp
.src("source/img/**/*.{png,jpg}")
.pipe(
gulpwebp({
quality: 90,
})
)
.pipe(gulp.dest("source/img"));
};
const sprite = () => {
return gulp
.src("source/img/icon-*.svg")
.pipe(
svgstore({
inlineSvg: true,
})
)
.pipe(rename("sprite.svg"))
.pipe(gulp.dest("build/img"));
};
const html = () => {
return gulp
.src("source/*.html")
.pipe(posthtml([include()]))
.pipe(gulp.dest("build"));
};
const copy = () => {
return gulp
.src(
[
"source/fonts/**/*.{woff,woff2}",
"source/img/**",
"source/js/**",
"source/*.ico",
"source/css/**/normalize.css",
],
{
base: "source",
}
)
.pipe(gulp.dest("build"));
};
const clean = () => {
return del("build");
};
const server = () => {
browsersync.init({
server: "build/",
notify: false,
open: true,
cors: true,
ui: false,
});
};
const watch = () => {
gulp.watch("source/less/**/*.less", gulp.series(styles));
gulp.watch("source/img/icon-*.svg", gulp.series(sprite, html));
gulp.watch("source/img/**/*", gulp.series(webp, images));
gulp.watch("source/*.html", gulp.series(html));
};
export default gulp.series(
clean,
sprite,
gulp.parallel(html, styles, webp, images, copy),
gulp.parallel(watch, server)
);