-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
81 lines (73 loc) · 1.92 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
// если не подходит миксин астро и нужно использовать old style way
// 1. используй миксин @ul/Picture/Picture.astro
// 2. Добавь галп в package.json
// package.json
// {
// ...
// "scripts": {
// ...
// "build": "astro build && gulp optimizeImages",
// "webp": "gulp createWebp",
// "optimizeImage": "gulp optimizeImages",
// },
// "devDependencies": {
// ...
// "gulp": "^4.0.2",
// "gulp-webp": "4.0.1",
// "gulp-imagemin": "7.1.0",
// "imagemin-mozjpeg": "10.0.0",
// "imagemin-pngquant": "9.0.2",
// "del": "6.1.1"
// }
// }
import gulp from 'gulp'
import webp from 'gulp-webp'
import del from 'del'
import imagemin from 'gulp-imagemin'
import pngQuant from 'imagemin-pngquant'
import mozJpeg from 'imagemin-mozjpeg'
const createWebp = () => {
const root = ''
return gulp
.src('public/**/*.{png,jpg}')
.pipe(webp({ quality: 90 }))
.pipe(gulp.dest(`dist/${root}`))
}
const cleanImages = () => del('dist/img/')
const copyImages = () =>
gulp
.src('public/img/**/*.{png,jpg,jpeg,webp}', { base: 'public' })
.pipe(gulp.dest('dist/'))
const optimizeJpg = () =>
gulp
.src('public/img/**/*.{jpg,jpeg}', { base: 'public' })
.pipe(imagemin([mozJpeg({ quality: 55, progressive: true })]))
.pipe(gulp.dest('dist/'))
const optimizePng = () =>
gulp
.src('public/img/**/*.png', { base: 'public' })
.pipe(
imagemin([
pngQuant({
speed: 1,
strip: true,
dithering: 1,
quality: [0.5, 0.6]
})
])
)
.pipe(gulp.dest('dist/'))
const createBuildWebp = () => {
return gulp
.src('public/img/**/*.{png,jpg}')
.pipe(webp({ quality: 50 }))
.pipe(gulp.dest('dist/img/'))
}
const optimizeImages = gulp.series(
cleanImages,
copyImages,
optimizePng,
optimizeJpg,
createBuildWebp
)
export { createWebp, optimizeImages }