laravel-elixir-image-resize
Version:
Laravel Elixir 3 wrapper around gulp-image-resize Gulp task.
63 lines (54 loc) • 2.05 kB
JavaScript
var gulp = require('gulp');
var imageresize = require('gulp-image-resize');
var changed = require('gulp-changed');
var rename = require("gulp-rename");
var _ = require('underscore');
var Elixir = require('laravel-elixir');
var $ = Elixir.Plugins;
var config = Elixir.config;
/*
|----------------------------------------------------------------
| ImageResize Processor
|----------------------------------------------------------------
|
| This task will trigger your images to be processed using
| image-resize processor.
|
| Resize jpg, jpeg, png, pdf, gif and svg images
|
*/
if (typeof config.imagePath === 'undefined') {
config.imagePath = 'images';
}
Elixir.extend('imageresize', function(resizeOptions, renameOptions, src, output) {
var paths = prepGulpPaths(src, output);
resizeOptions = _.extend({}, resizeOptions);
renameOptions = _.extend({}, renameOptions);
new Elixir.Task('imageresize', function () {
this.log(paths.src, paths.output);
return gulp.src(paths.src.path)
.pipe($.if(renameOptions == {},changed(paths.output.path))) //invoke gulp-changed only when not gulp-rename(ing)
.pipe(imageresize(resizeOptions))
.on('error', function(e) {
new Elixir.Notification().error(e, 'Image Resize Failed!');
this.emit('end');
})
.pipe(rename(renameOptions))
.pipe(gulp.dest(paths.output.path))
.pipe(new Elixir.Notification('Image Resize Complete!'))
})
.watch(config.get('assets.imagePath') + '/**/*.+(jpg|jpeg|png|pdf|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|pdf|gif|svg)';
return new Elixir.GulpPaths()
.src(src, config.get('assets.imagePath'))
.output(output || config.get('public.imagePath'));
}