-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
105 lines (91 loc) · 2.56 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
const gulp = require("gulp"),
devBuild = process.env.NODE_ENV !== "production",
src = "src/",
build = "build/",
noop = require("gulp-noop"),
newer = require("gulp-newer"),
imagemin = require("gulp-imagemin"),
htmlclean = require("gulp-htmlclean"),
concat = require("gulp-concat"),
deporder = require("gulp-deporder"),
terser = require("gulp-terser"),
stripdebug = devBuild ? null : require("gulp-strip-debug"),
sourcemaps = devBuild ? require("gulp-sourcemaps") : null,
sass = require("gulp-sass"),
postcss = require("gulp-postcss"),
assets = require("postcss-assets"),
autoprefixer = require("autoprefixer"),
mqpacker = require("css-mqpacker"),
cssnano = require("cssnano");
function images() {
const out = build + "images/";
return gulp
.src(src + "images/**/*")
.pipe(newer(out))
.pipe(imagemin({ optimizationLevel: 5 }))
.pipe(gulp.dest(out));
}
function index() {
const out = build;
return gulp
.src(src + 'index.html')
.pipe(newer(out))
.pipe(devBuild ? noop() : htmlclean())
.pipe(gulp.dest(out));
}
function html() {
const out = build + "pages/";
return gulp
.src(src + "pages/**/*")
.pipe(newer(out))
.pipe(devBuild ? noop() : htmlclean())
.pipe(gulp.dest(out));
}
function js() {
return gulp
.src(src + "js/**/*")
.pipe(sourcemaps ? sourcemaps.init() : noop())
.pipe(deporder())
.pipe(concat("main.js"))
.pipe(stripdebug ? stripdebug() : noop())
.pipe(terser())
.pipe(sourcemaps ? sourcemaps.write() : noop())
.pipe(gulp.dest(build + "js/"));
}
function css() {
return gulp
.src(src + "scss/style.scss")
.pipe(sourcemaps ? sourcemaps.init() : noop())
.pipe(
sass({
outputStyle: "nested",
imagePath: "/images/",
precision: 3,
errLogToConsole: true
}).on("error", sass.logError)
)
.pipe(
postcss([
assets({ loadPaths: ["images/"] }),
autoprefixer(),
mqpacker,
cssnano
])
)
.pipe(sourcemaps ? sourcemaps.write() : noop())
.pipe(gulp.dest(build + "css/"));
}
exports.html = gulp.series(images, index, html);
exports.js = js;
exports.css = gulp.series(images, css);
exports.build = gulp.parallel(exports.html, exports.js, exports.css);
function watch(done) {
gulp.watch(src + "images/**/*", images);
gulp.watch(src + 'index.html', index);
gulp.watch(src + "pages/**/*", html);
gulp.watch(src + "js/**/*", js);
gulp.watch(src + "scss/**/*", css);
done();
}
exports.watch = watch;
exports.default = gulp.series(exports.build, exports.watch);