-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
58 lines (48 loc) · 1.46 KB
/
index.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
var gulp = require('gulp');
var Elixir = require('laravel-elixir');
var imagemin = require('gulp-imagemin');
var pngquant = require('imagemin-pngquant');
var config = Elixir.config;
var _ = require('underscore');
/*
|----------------------------------------------------------------
| Minify images
|----------------------------------------------------------------
|
| This task will minify PNG, JPEG, GIF and SVG images using
| imagemin processor.
|
*/
if (typeof config.imagePath != 'string'){
config.imagePath = 'img';
}
Elixir.extend('imagemin', function(src, output, options) {
var paths = prepGulpPaths(src, output);
options = _.extend({
progressive: true,
svgoPlugins: [{removeViewBox: false}],
use: [pngquant()]
}, options);
new Elixir.Task('imagemin', function() {
this.log(paths.src, paths.output);
return (
gulp.src(paths.src.path)
.pipe(imagemin(options))
.pipe(gulp.dest(paths.output.baseDir))
);
})
.watch(config.get('assets.imagePath') + '/**/*.+(jpg|jpeg|png|gif|svg)');
});
/**
* Prep the Gulp src and output paths.
*
* @param {string|array} src
* @param {string|null} output
* @return {object}
*/
var prepGulpPaths = function(src, output) {
src = src || '/**/*.+(jpg|jpeg|png|gif|svg)';
return new Elixir.GulpPaths()
.src(src, config.get('assets.imagePath'))
.output(output || config.get('public.imagePath'));
}