UNPKG

2.53 kBJavaScriptView Raw
1//-------------------------------------
2//-- Assets
3//-------------------------------------
4'use strict';
5
6// const debug = require('gulp-debug');
7const gulp = require('gulp');
8const gm = require('gulp-gm');
9const imagemin = require('gulp-imagemin');
10const rename = require('gulp-rename');
11const { terminal } = require('@absolunet/terminal');
12const flow = require('~/helpers/flow');
13const paths = require('~/helpers/paths');
14const toolbox = require('~/helpers/toolbox');
15const util = require('~/helpers/util');
16
17
18module.exports = () => {
19
20 //-- Fonts copy
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 //-- Images optimization
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 //-- High density images generation
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 //-- Raw copy
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 //-- Rebuild images
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 //-- Rebuild
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};