From 005e2627c1fc7846c5cba3d222b4025012c61e75 Mon Sep 17 00:00:00 2001 From: Kevin Martensson Date: Sun, 22 Mar 2015 17:36:35 +0100 Subject: [PATCH] Add support for renaming files Fixes #293. --- Gruntfile.js | 5 +++++ package.json | 1 + tasks/imagemin.js | 5 +++++ test/test.js | 7 +++++++ 4 files changed, 18 insertions(+) diff --git a/Gruntfile.js b/Gruntfile.js index d8f23e7..ffa95ec 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -33,6 +33,11 @@ module.exports = function (grunt) { src: '**/*.{gif,GIF,jpg,JPG,png,PNG}', dest: 'tmp' }] + }, + rename: { + files: { + 'tmp/rename.jpg': 'test/fixtures/test.jpg' + } } }, nodeunit: { diff --git a/package.json b/package.json index 8ad6925..ede6182 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "dependencies": { "async": "^0.9.0", "chalk": "^1.0.0", + "gulp-rename": "^1.2.0", "imagemin": "^3.1.0", "pretty-bytes": "^1.0.1" }, diff --git a/tasks/imagemin.js b/tasks/imagemin.js index 3a2b830..e2a3b83 100644 --- a/tasks/imagemin.js +++ b/tasks/imagemin.js @@ -6,6 +6,7 @@ var async = require('async'); var chalk = require('chalk'); var prettyBytes = require('pretty-bytes'); var Imagemin = require('imagemin'); +var rename = require('gulp-rename'); /* * grunt-contrib-imagemin @@ -40,6 +41,10 @@ module.exports = function (grunt) { options.use.forEach(imagemin.use.bind(imagemin)); } + if (path.basename(file.src[0]) !== path.basename(file.dest)) { + imagemin.use(rename(path.basename(file.dest))); + } + fs.stat(file.src[0], function (err, stats) { if (err) { grunt.warn(err + ' in file ' + file.src[0]); diff --git a/test/test.js b/test/test.js index 7233dfd..64e15a5 100644 --- a/test/test.js +++ b/test/test.js @@ -62,6 +62,13 @@ exports.imagemin = { test.ok(fs.existsSync('tmp/nested/nested/test.png'), 'should support nested dest dir'); + test.done(); + }, + rename: function (test) { + test.expect(1); + + test.ok(fs.existsSync('tmp/rename.jpg'), 'should support renaming'); + test.done(); } };