1 |
|
2 |
|
3 |
|
4 | 'use strict';
|
5 |
|
6 |
|
7 | const gulp = require('gulp');
|
8 | const gm = require('gulp-gm');
|
9 | const imagemin = require('gulp-imagemin');
|
10 | const rename = require('gulp-rename');
|
11 | const { terminal } = require('@absolunet/terminal');
|
12 | const flow = require('~/helpers/flow');
|
13 | const paths = require('~/helpers/paths');
|
14 | const toolbox = require('~/helpers/toolbox');
|
15 | const util = require('~/helpers/util');
|
16 |
|
17 |
|
18 | module.exports = () => {
|
19 |
|
20 |
|
21 | flow.createTask('assets-fonts', () => {
|
22 | return util.assetsProcess(paths.files.fonts, (stream) => {
|
23 | return stream
|
24 | .pipe(toolbox.plumber())
|
25 | .pipe(rename(util.assetsRename()))
|
26 | ;
|
27 | });
|
28 | });
|
29 |
|
30 |
|
31 |
|
32 | flow.createTask('assets-images-optimization', () => {
|
33 | return util.assetsProcess(paths.files.images, (stream) => {
|
34 | return stream
|
35 | .pipe(toolbox.plumber())
|
36 | .pipe(imagemin())
|
37 | .pipe(rename(util.assetsRename()))
|
38 | ;
|
39 | });
|
40 | });
|
41 |
|
42 |
|
43 |
|
44 | flow.createTask('assets-images-highdensity', () => {
|
45 | return util.assetsProcess(paths.files.images2x, (stream) => {
|
46 | return stream
|
47 | .pipe(toolbox.plumber())
|
48 | .pipe(gm((gmfile, done) => {
|
49 | gmfile.identify((error, info) => {
|
50 | if (error) {
|
51 | terminal.error(error);
|
52 | }
|
53 | toolbox.gmOptimization(gmfile.resize('50%', '50%'), info);
|
54 | done(null, gmfile);
|
55 | });
|
56 | }))
|
57 |
|
58 | .pipe(imagemin())
|
59 |
|
60 | .pipe(rename(util.assetsRename((filename) => { return filename.slice(0, -3); })))
|
61 | ;
|
62 | });
|
63 | });
|
64 |
|
65 |
|
66 |
|
67 | flow.createTask('assets-raw', () => {
|
68 | return util.assetsProcess(paths.files.raw, (stream) => {
|
69 | return stream
|
70 | .pipe(toolbox.plumber())
|
71 | .pipe(rename(util.assetsRename()))
|
72 | ;
|
73 | });
|
74 | });
|
75 |
|
76 |
|
77 |
|
78 |
|
79 |
|
80 |
|
81 |
|
82 | flow.createSequence('assets-images', gulp.parallel('assets-images-optimization', 'assets-images-highdensity'), {
|
83 | cleanBundle: ({ bundle }) => {
|
84 | return [`${paths.directory.root}/${bundle.output.build}/${paths.build.images}`];
|
85 | }
|
86 | });
|
87 |
|
88 |
|
89 |
|
90 | flow.createSequence('assets', gulp.parallel('assets-fonts', 'assets-images', 'assets-raw'), {
|
91 | cleanBundle: ({ bundle }) => {
|
92 | return [
|
93 | `${paths.directory.root}/${bundle.output.build}/${paths.build.fonts}`,
|
94 | `${paths.directory.root}/${bundle.output.build}/${paths.build.images}`,
|
95 | `${paths.directory.root}/${bundle.output.build}/${paths.build.raw}`
|
96 | ];
|
97 | }
|
98 | });
|
99 |
|
100 | };
|