forked from alura-cursos/performance-web
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
105 lines (75 loc) · 2.51 KB
/
gulpfile.js
File metadata and controls
105 lines (75 loc) · 2.51 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
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
/*
Gulpfile de exemplo para algumas ações clássicas de otimização.
Para aprender mais sobre Gulp, veja o Curso Online de Gulp do Alura:
https://www.alura.com.br/curso-online-gulp
*/
var gulp = require('gulp');
var $ = require('gulp-load-plugins')({rename: {'gulp-rev-delete-original':'revdel', 'gulp-if': 'if'}});
/* Tasks base */
gulp.task('copy', function() {
return gulp.src(['site/assets/{img,font}/**/*', 'site/app.yaml'], {base: 'site'})
.pipe(gulp.dest('dist'));
});
gulp.task('clean', function() {
return gulp.src('dist/', {read: false})
.pipe($.clean());
});
/* Minificação */
gulp.task('minify-js', function() {
return gulp.src('site/**/*.js')
.pipe($.uglify())
.pipe(gulp.dest('dist/'))
});
gulp.task('minify-css', function() {
return gulp.src('site/**/*.css')
.pipe($.cssnano({safe: true}))
.pipe(gulp.dest('dist/'))
});
gulp.task('minify-html', function() {
return gulp.src('site/**/*.html')
.pipe($.htmlmin({collapseWhitespace: true}))
.pipe(gulp.dest('dist/'))
});
/* Concatenação */
gulp.task('useref', function () {
return gulp.src('site/index.html')
.pipe($.useref())
.pipe($.if('*.html', $.inlineSource()))
.pipe($.if('*.html', $.htmlmin({collapseWhitespace: true})))
.pipe($.if('*.js', $.uglify()))
.pipe($.if('*.css', $.cssnano({safe: true})))
.pipe(gulp.dest('dist'));
});
/* Imagens */
gulp.task('imagemin', function() {
return gulp.src('site/assets/img/*')
.pipe($.imagemin({
progressive: true,
svgoPlugins: [
{removeViewBox: false},
{cleanupIDs: false}
]
}))
.pipe(gulp.dest('dist/assets/img'));
});
/* Revisão de arquivos */
gulp.task('rev', function(){
return gulp.src(['dist/**/*.{css,js,jpg,jpeg,png,svg}'])
.pipe($.rev())
.pipe($.revdel())
.pipe(gulp.dest('dist/'))
.pipe($.rev.manifest())
.pipe(gulp.dest('dist/'))
})
gulp.task('revreplace', ['rev'], function(){
return gulp.src(['dist/index.html', 'dist/app.yaml', 'dist/**/*.css'])
.pipe($.revReplace({
manifest: gulp.src('dist/rev-manifest.json'),
replaceInExtensions: ['.html', '.yaml', '.js', '.css']
}))
.pipe(gulp.dest('dist/'));
});
/* Alias */
gulp.task('minify', ['minify-js', 'minify-css', 'minify-html']);
gulp.task('build', $.sequence(['minify-js', 'minify-css', 'imagemin'], 'useref', 'revreplace'));
gulp.task('default', $.sequence('clean', 'copy', 'build'));