-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.babel.js
118 lines (106 loc) · 2.77 KB
/
gulpfile.babel.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
/* eslint-disable no-console */
import {watch, task, src, dest, series} from "gulp";
import pug from "gulp-pug";
import prettyHtml from "gulp-pretty-html";
import autoprefixer from "gulp-autoprefixer";
import sass from "gulp-sass";
import sourcemaps from "gulp-sourcemaps";
import uglify from "gulp-uglify";
import babel from "gulp-babel";
import plumber from "gulp-plumber";
import gutil from "gulp-util";
import notify from "gulp-notify";
import glr from "gulp-livereload";
import StaticServer from "static-server";
const server = new StaticServer({
rootPath: "./dist/",
port: 1337,
});
task("copy-server-files", done => {
src(
[
"./src/!(scss|css|js)**/*",
"./src/!(scss|css|js)**/**",
"./src/!(scss|css|js)**",
],
{
base: "./src",
},
)
.pipe(plumber())
.pipe(dest("./dist/"));
done();
});
task("compile-pug", done => {
src("./templates/!(_)*.pug", {base: "./templates"})
.pipe(
plumber({
errorHandler(err) {
notify.onError({
title: `Gulp error in ${err.plugin}`,
message: err.message,
})(err);
gutil.beep();
},
}),
)
.pipe(
pug({
pretty: true,
}),
)
.pipe(prettyHtml())
.pipe(dest("./dist"))
.pipe(glr());
done();
});
task("compile-sass", done => {
src(["./src/scss/**/!(_)*.sass", "./src/scss/**/!(_)*.scss"])
.pipe(plumber())
.pipe(sourcemaps.init())
.pipe(
sass({
outputStyle: "compressed",
precision: 10,
includePaths: ["."],
onError: console.error.bind(console, "Sass error:"),
}),
)
.pipe(autoprefixer())
.pipe(sourcemaps.write("."))
.pipe(dest("./dist/css/"))
.pipe(glr());
done();
});
task("minify-js", done => {
src("./src/js/**/*.js", {base: "./src/js"})
.pipe(babel())
.pipe(uglify())
.pipe(dest("./dist/js"))
.pipe(glr());
done();
});
const buildSeries = series(
"copy-server-files",
"compile-pug",
"compile-sass",
"minify-js",
);
exports.default = done => {
server.start(() => {
console.log("Server listening to port", server.port);
});
glr.listen();
buildSeries();
watch(
[
"./src/!(scss|sass|css|js)**/*",
"./templates/**/*.pug",
"./src/scss/**/*.s(a|c)ss",
"./src/js/**/*.js",
],
series("copy-server-files", "compile-pug", "compile-sass", "minify-js"),
);
done();
};
exports.build = buildSeries;