-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
123 lines (110 loc) · 3.12 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
const gulp = require('gulp');
const htmlmin = require('gulp-htmlmin');
const terser = require('gulp-terser');
const purify = require('gulp-purifycss');
const cleanCSS = require('gulp-clean-css');
const replace = require('gulp-replace');
const jsonMin = require('gulp-json-minify');
const svgMin = require('gulp-svgmin')
function minifyHTML(page) {
console.log(page)
return gulp.src(page)
.pipe(htmlmin({
collapseWhitespace: true,
removeComments: true,
removeTagWhitespace: true,
removeAttributeQuotes: true,
collapseBooleanAttributes: true,
minifyCSS: true,
}))
.pipe(gulp.dest('./build'));
}
async function minifyJS(js) {
console.log(js)
return gulp.src(js)
.pipe(replace('module.exports = {};', ''))
.pipe(terser({
keep_fnames: false,
mangle: {
toplevel: true,
keep_fnames: false,
},
}))
.pipe(gulp.dest('build/js'))
}
function minifyCSS(css) {
console.log(css)
return gulp.src(css)
.pipe(cleanCSS({ level: { 1: { all: true }, 2: { all: true } } }))
.pipe(gulp.dest('build/css'));
}
function minifyBootstrapCSS() {
console.log('bootstrap/bootstrap.css')
return gulp.src('bootstrap/bootstrap.css')
.pipe(purify(['src/html/settings.html', 'src/html/index.html'], {
whitelist: [
'bg-black',
'rounded-circle',
'border-0',
// input groups
'dropdown-toggle',
'form-select',
'has-validation',
'form-floating',
'form-control',
'dropdown-menu',
'input-group',
'valid-tooltip',
'invalid-tooltip',
'invalid-feedback',
]
}))
.pipe(cleanCSS({ level: { 1: { all: true }, 2: { all: true } } }))
.pipe(gulp.dest('build/css'));
}
function minifySVGIcons(icon) {
console.log(icon)
return gulp.src(icon)
.pipe(svgMin())
.pipe(gulp.dest('./build/assets/icons'));
}
function minifyJSON(json) {
console.log(json)
return gulp.src(json)
.pipe(jsonMin())
.pipe(gulp.dest('./build'));
}
function minifyLang(json) {
console.log(json)
return gulp.src(json)
.pipe(jsonMin())
.pipe(gulp.dest('./build/_locales'));
}
const task_html = gulp.series(
() => minifyHTML('src/html/*'),
);
const task_js = gulp.series(
() => minifyJS('build/js/*'),
);
const task_css = gulp.series(
() => minifyBootstrapCSS(),
() => minifyCSS('src/css/index.css'),
() => minifyCSS('src/css/colors.css'),
);
const task_misc = gulp.series(
() => minifyJSON('./manifest.json'),
() => minifyLang('./src/_locales/*/*'),
() => minifySVGIcons('./src/assets/icons/*'),
);
const task_full = gulp.series(
task_html,
task_css,
task_js,
task_misc,
);
exports.js = task_js;
exports.css = task_css;
exports.html = task_html;
exports.misc = task_misc;
exports.full = task_full;
exports.default = exports.full;