-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.mjs
115 lines (91 loc) · 3.13 KB
/
gulpfile.mjs
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
import gulp from "gulp";
import imagemin from "gulp-imagemin";
import uglify from "gulp-uglify";
import dartSass from "sass";
import gulpSass from "gulp-sass";
import babel from "gulp-babel";
import concat from "gulp-concat";
import rev from "gulp-rev";
import cleanCss from "gulp-clean-css";
import size from "gulp-size";
import autoprefixer from "gulp-autoprefixer";
import path from "path";
// Asset contracts for path
const ASSETS = {
base: path.resolve(),
src: "/resources",
dist: "/public",
js: "/assets/js",
css: "/assets/css",
sass: "/assets/sass",
img: "/assets/img",
icon: "/assets/icons",
font: "/assets/fonts",
};
// Tasks
gulp.task("minify-img", async () => {
gulp.src(`${ASSETS.base}${ASSETS.src}${ASSETS.img}/*`)
.pipe(imagemin())
.pipe(rev())
.pipe(size())
.pipe(gulp.dest(`${ASSETS.base}${ASSETS.dist}${ASSETS.img}`));
});
gulp.task("minify-css", async () => {
gulp.src(`${ASSETS.base}${ASSETS.src}${ASSETS.css}/*.css`)
.pipe(autoprefixer())
.pipe(cleanCss({compatibility: 'ie8'}))
.pipe(concat("styles.min.css"))
// .pipe(rev())
.pipe(size())
.pipe(gulp.dest(`${ASSETS.base}${ASSETS.dist}${ASSETS.css}`))
})
gulp.task("minify-js", async () => {
gulp.src(`${ASSETS.base}${ASSETS.src}${ASSETS.js}/*.js`)
.pipe(babel({
presets : ["@babel/preset-env"]
}))
.pipe(uglify())
.pipe(concat("app.min.js"))
// .pipe(rev())
.pipe(size())
.pipe(gulp.dest(`${ASSETS.base}${ASSETS.dist}${ASSETS.js}`))
})
gulp.task("compile-sass", async () => {
const sass = gulpSass(dartSass)
gulp.src(`${ASSETS.base}${ASSETS.src}${ASSETS.sass}/*.scss`)
.pipe(sass().on('error', sass.logError))
.pipe(concat("styles.css"))
// .pipe(rev())
.pipe(size())
.pipe(gulp.dest(`${ASSETS.base}${ASSETS.dist}${ASSETS.css}`))
})
gulp.task("copy-icon-files", async () => {
gulp.src(`${ASSETS.base}${ASSETS.src}${ASSETS.icon}/*`)
// .pipe(rev())
.pipe(size())
.pipe(gulp.dest(`${ASSETS.base}${ASSETS.dist}${ASSETS.icon}`))
})
gulp.task("copy-font-files", async () => {
gulp.src(`${ASSETS.base}${ASSETS.src}${ASSETS.font}/*`)
// .pipe(rev())
.pipe(size())
.pipe(gulp.dest(`${ASSETS.base}${ASSETS.dist}${ASSETS.font}`))
})
// Start tasks once proccess
gulp.task("default", gulp.parallel(
"minify-img",
"minify-css",
"minify-js",
"compile-sass",
"copy-icon-files",
"copy-font-files",
))
// Start tasks as watch mode (LIVE)
gulp.task("watch", async () => {
gulp.watch(`${ASSETS.base}${ASSETS.src}${ASSETS.js}`, gulp.series("minify-js"));
gulp.watch(`${ASSETS.base}${ASSETS.src}${ASSETS.css}`, gulp.series("minify-css"));
gulp.watch(`${ASSETS.base}${ASSETS.src}${ASSETS.img}`, gulp.series("minify-img"));
gulp.watch(`${ASSETS.base}${ASSETS.src}${ASSETS.sass}`, gulp.series("compile-sass"));
gulp.watch(`${ASSETS.base}${ASSETS.src}${ASSETS.icon}`, gulp.series("copy-icon-files"));
gulp.watch(`${ASSETS.base}${ASSETS.src}${ASSETS.font}`, gulp.series("copy-font-files"));
})