From d0b773e3be13a3f27fb019410cb15c36991b70aa Mon Sep 17 00:00:00 2001 From: Caden Lovelace Date: Thu, 1 Jan 2015 22:33:47 +0000 Subject: [PATCH 1/3] Add option for custom file baseDir. --- README.md | 9 ++++- index.js | 5 +-- .../elsewhere/clock2.png} | Bin test/fixtures/custom_dir/input.html | 3 ++ test/fixtures/default_dir/clock.png | Bin 0 -> 42218 bytes test/fixtures/{ => default_dir}/input.html | 2 +- test/fixtures/output.html | 2 +- test/test.js | 33 ++++++++++++++---- 8 files changed, 43 insertions(+), 11 deletions(-) rename test/fixtures/{clock.png => custom_dir/elsewhere/clock2.png} (100%) create mode 100644 test/fixtures/custom_dir/input.html create mode 100644 test/fixtures/default_dir/clock.png rename test/fixtures/{ => default_dir}/input.html (80%) diff --git a/README.md b/README.md index 62f5df7..270e816 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,14 @@ Convert and replace image-files within your DOM/HTML to base64-encoded data. +## Options + +```js +img64({ + baseDir: 'path/to/images' +}) +``` + ## Example ##### gulpfile.js @@ -42,7 +50,6 @@ gulp.task('default', function () { ... ``` - ### License MIT © 247even diff --git a/index.js b/index.js index 115a3db..d194578 100644 --- a/index.js +++ b/index.js @@ -6,7 +6,8 @@ var fs = require('fs'); var path = require('path'); var mime = require('mime'); -module.exports = function() { +module.exports = function(opts) { + opts = opts || {} // create a stream through which each file will pass return through.obj(function(file, enc, callback) { @@ -29,7 +30,7 @@ module.exports = function() { var ssrc = this.attr('src'); var isdata = ssrc.indexOf("data"); if (ssrc != "" && typeof ssrc != 'undefined' && isdata !== 0) { - var spath = path.join(file.base, ssrc); + var spath = path.join(opts.baseDir || file.base, ssrc); var mtype = mime.lookup(spath); if (mtype != 'application/octet-stream') { console.log(mtype); diff --git a/test/fixtures/clock.png b/test/fixtures/custom_dir/elsewhere/clock2.png similarity index 100% rename from test/fixtures/clock.png rename to test/fixtures/custom_dir/elsewhere/clock2.png diff --git a/test/fixtures/custom_dir/input.html b/test/fixtures/custom_dir/input.html new file mode 100644 index 0000000..3ccce45 --- /dev/null +++ b/test/fixtures/custom_dir/input.html @@ -0,0 +1,3 @@ + + + diff --git a/test/fixtures/default_dir/clock.png b/test/fixtures/default_dir/clock.png new file mode 100644 index 0000000000000000000000000000000000000000..fa3c8a7fca0635db6d1c5f1ac6de2dcfa487d2a2 GIT binary patch literal 42218 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 - \ No newline at end of file + diff --git a/test/fixtures/output.html b/test/fixtures/output.html index 09df86e..ac090b5 100644 --- a/test/fixtures/output.html +++ b/test/fixtures/output.html @@ -1,3 +1,3 @@ - \ No newline at end of file + diff --git a/test/test.js b/test/test.js index e2067c9..5459193 100644 --- a/test/test.js +++ b/test/test.js @@ -8,20 +8,26 @@ var mime = require('mime'); describe('gulp-img64', function() { describe('in buffer mode', function() { - it('should replace images in DOM with base64 data', function(done) { - - var filename = path.join(__dirname, '/fixtures/input.html'); + function getInput(file) { + var filename = path.join(__dirname, file); - var input = new gutil.File({ + return new gutil.File({ base: path.dirname(filename), path: filename, contents: new Buffer(fs.readFileSync(filename, 'utf8')) }); + } + function getOutput() { + return fs.readFileSync(path.join(__dirname, '/fixtures/output.html'), 'utf8') + } + + it('should replace images in DOM with base64 data', function(done) { + var input = getInput('/fixtures/default_dir/input.html'); var stream = img64(); stream.on('data', function(newFile) { - assert.equal(String(newFile.contents), fs.readFileSync(path.join(__dirname, '/fixtures/output.html'), 'utf8')); + assert.equal(String(newFile.contents), getOutput()); done(); }); @@ -29,5 +35,20 @@ describe('gulp-img64', function() { }); + context('when baseDir option is given', function() { + it('should replace images in DOM with base64 data', function(done) { + var input = getInput('/fixtures/custom_dir/input.html'); + var stream = img64({baseDir: path.join(__dirname, '/fixtures/custom_dir/elsewhere')}); + + stream.on('data', function(newFile) { + assert.equal(String(newFile.contents), getOutput()); + done(); + }); + + stream.write(input); + + }) + }) + }); -}); \ No newline at end of file +}); From 74155dedaaf97c023529473fd1ff0cea41ea8e44 Mon Sep 17 00:00:00 2001 From: Caden Lovelace Date: Thu, 1 Jan 2015 22:32:38 +0000 Subject: [PATCH 2/3] Remove debugging message. --- index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/index.js b/index.js index d194578..3f18f96 100644 --- a/index.js +++ b/index.js @@ -33,7 +33,6 @@ module.exports = function(opts) { var spath = path.join(opts.baseDir || file.base, ssrc); var mtype = mime.lookup(spath); if (mtype != 'application/octet-stream') { - console.log(mtype); var sfile = fs.readFileSync(spath); var simg64 = new Buffer(sfile).toString('base64'); this.attr('src', 'data:' + mtype + ';base64,' + simg64); From ccd1905b8a46ccb38822c6a720ad65bf8b70b8d8 Mon Sep 17 00:00:00 2001 From: Caden Lovelace Date: Thu, 1 Jan 2015 22:56:53 +0000 Subject: [PATCH 3/3] .gitignore node_modules. --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules