node-sprite-generator
Version:
Generates image sprites and their spritesheets (css, stylus, sass, scss or less) from sets of images. Supports retina sprites. Provides express middleware and grunt task.
38 lines (29 loc) • 1.26 kB
JavaScript
;
var fs = require('fs'),
utils = require('../utils/stylesheet'),
_ = require('underscore');
module.exports = function getTemplatedStylesheet(templatePath) {
var template = _.template(fs.readFileSync(templatePath).toString());
return function generateSpritesheet(layout, filePath, spritePath, options, callback) {
var scaledLayout,
defaults = {
prefix: '',
nameMapping: utils.nameToClass,
spritePath: utils.getRelativeSpriteDir(spritePath, filePath),
pixelRatio: 1
};
options = _.extend({}, defaults, options);
scaledLayout = utils.getScaledLayoutForPixelRatio(layout, options.pixelRatio);
scaledLayout.images = scaledLayout.images.map(function (image) {
var imageName = options.nameMapping(image.path),
className = utils.prefixString(imageName, options);
return _.extend(image, { className: className });
});
fs.writeFile(filePath, template({
getCSSValue: utils.getCSSValue,
spriteName: utils.prefixString('sprite', options),
options: options,
layout: scaledLayout
}), callback);
};
};