UNPKG

gulp-css-spritesmith_3x

Version:

A plugin to help front engineer creating css sprite.

83 lines (65 loc) 2.33 kB
// Dependencies var assert = require('assert'); var gutil = require('gulp-util'); var through2 = require('through2'); var cssSpriteSmith = require('css-spritesmith_3x'); // Default options var defautlOptions = cssSpriteSmith.defautlOptions; function gulpCssSprite(options) { options = options || {}; for(var k in defautlOptions) { if(options[k] === undefined) { options[k] = defautlOptions[k]; } } assert(options.imagepath, 'An `imagepath` parameter was not provided'); assert(options.spritedest, 'An `spritedest` parameter was not provided'); function onData(file, encoding, cb) { var self = this; var filepath = file.path; if(!filepath) { return cb(); } options.cssfile = filepath; cssSpriteSmith(options, function(err, data) { if(err) { return cb(err); } if(data.cssData === null) { return cb(); } var cssFile = new gutil.File({ contents: new Buffer(data.cssData), path: filepath }); self.push(cssFile); // sprite file var spriteData = data.spriteData; var spriteFile = new gutil.File({ contents: new Buffer(spriteData.image, 'binary'), path: spriteData.imagePath }); self.push(spriteFile); var retinaSpriteData = data.retinaSpriteData; if(retinaSpriteData) { var retinaSpriteFile = new gutil.File({ contents: new Buffer(retinaSpriteData.image, 'binary'), path: retinaSpriteData.imagePath }); self.push(retinaSpriteFile); } var retina3xSpriteData = data.retina3xSpriteData; if(retina3xSpriteData) { var retina3xSpriteFile = new gutil.File({ contents: new Buffer(retina3xSpriteData.image, 'binary'), path: retina3xSpriteData.imagePath }); self.push(retina3xSpriteFile); } cb(); }); } var retStream = through2.obj(onData); return retStream; } module.exports = gulpCssSprite;