forked from auth0/styleguide
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
75 lines (67 loc) · 1.62 KB
/
Copy pathgulpfile.js
File metadata and controls
75 lines (67 loc) · 1.62 KB
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
const gulp = require('gulp');
const $ = require('gulp-load-plugins')();
const { gifsicle, jpegtran, optipng, svgo } = require('gulp-imagemin');
/**
* CSS bundle task
*/
gulp.task('styles', () =>
gulp.src('./src/main.styl')
.pipe($.stylus({
'include css': true
}))
.pipe($.autoprefixer({
browsers: ['last 2 versions'],
cascade: false
}))
// Unminified CSS bundle
.pipe($.rename('components.css'))
.pipe(gulp.dest('./build/'))
// Minified CSS bundle
.pipe($.cssnano({ safe: true }))
.pipe($.rename('components.min.css'))
.pipe(gulp.dest('./build/'))
);
/**
* Emails task
*/
gulp.task('emails', () =>
gulp.src(['./src/emails/**/*.ejs', '!./src/emails/_modules/*.ejs'])
.pipe($.ejs())
.pipe($.htmlPrettify({
indent_char: ' ',
indent_size: 2
}))
.pipe($.mjml())
.pipe(gulp.dest('./build/emails/'))
);
/**
* CDN task: prepares the cdn folder with all the files to upload.
*/
gulp.task('cdn:images', () =>
gulp.src('./src/**/*.+(png|jpg|jpeg|gif|svg)')
.pipe($.imagemin([
gifsicle(), jpegtran(), optipng(),
svgo({ plugins: [{ removeUselessDefs: false }] })
]))
.pipe(gulp.dest('./cdn/media'))
);
gulp.task('cdn:others', () =>
gulp.src('./build/**/*.*')
.pipe(gulp.dest('./cdn'))
);
gulp.task('cdn', gulp.parallel('cdn:images', 'cdn:others'));
/**
* Build task
*/
gulp.task('build', gulp.series('styles', 'emails'));
/**
* Watch task
*/
gulp.task('watch', gulp.series((done) => {
gulp.watch('./**/*.styl', gulp.series('build'));
done();
}));
/**
* Default task
*/
gulp.task('default', gulp.series('watch'));