-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
89 lines (79 loc) · 2.13 KB
/
gulpfile.js
File metadata and controls
89 lines (79 loc) · 2.13 KB
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
const { series, dest, src, watch } = require("gulp");
const twig = require("gulp-twig");
const sourcemap = require("gulp-sourcemaps");
const browsersync = require("browser-sync").create();
const concat = require("gulp-concat");
const uglify = require("gulp-uglify");
const postcss = require("gulp-postcss");
const sass = require("gulp-sass")(require("node-sass"));
// Template engine twig
function templateTask() {
return src("./src/*.twig").pipe(twig()).pipe(dest("docs"));
}
// SCSS Styles
function styleTask() {
return src("./src/assets/scss/*.scss")
.pipe(sourcemap.init())
.pipe(sass({ outputStyle: "compressed" }))
.pipe(sourcemap.write("."))
.pipe(dest("docs/assets/css"))
.pipe(browsersync.stream());
}
// CSS Styles
function cssPluginTask() {
return src("./src/assets/css/*.css")
.pipe(concat("plugins.min.css"))
.pipe(dest("docs/assets/css"));
}
// Image asssets
function imageTask() {
return src("./src/assets/img/**").pipe(dest("docs/assets/img"));
}
// js asssets
function jsPluginsTask() {
return src(["./src/assets/js/**/*.js", "!src/assets/js/scripts.js"])
.pipe(concat("app.min.js"))
.pipe(uglify())
.pipe(dest("docs/assets/js"));
}
// Custom JS task
function customJsTask() {
return src("src/assets/js/scripts.js").pipe(dest("docs/assets/js"));
}
// Fonts file
function custonFonts() {
return src("src/assets/fonts/**").pipe(dest("docs/assets/fonts"));
}
// Live reload browsersync
function browsersyncServe(cb) {
browsersync.init({
server: {
baseDir: "./docs",
},
});
cb();
}
// Watch all files
function watcher() {
watch("./src/**/*.twig").on(
"change",
series(templateTask, browsersync.reload)
);
watch("./src/assets/img/**", imageTask);
watch("./src/assets/js/**/*.js", jsPluginsTask);
watch("./src/assets/js/scripts.js", customJsTask);
watch("./src/assets/css/*.css", cssPluginTask);
watch("./src/assets/scss/**/*.scss", styleTask);
watch("./src/assets/fonts/**", custonFonts);
}
exports.default = series(
templateTask,
styleTask,
cssPluginTask,
imageTask,
jsPluginsTask,
customJsTask,
custonFonts,
browsersyncServe,
watcher
);