UNPKG

grunt-spritesmith

Version:

Grunt task for converting a set of images into a spritesheet and corresponding CSS variables.

125 lines (122 loc) 5 kB
module.exports = function (grunt) { grunt.initConfig({ sprite: { basic: { // TODO: This order is forced due to png/jpg ordering. We should fix this. // src: 'test_files/*.{jpg,png}', src: ['test_files/sprite1.png', 'test_files/sprite2.jpg', 'test_files/sprite3.png'], dest: 'scratch/sprite.basic.png', destCss: 'scratch/sprite_positions.basic.styl' }, retina: { src: ['test_files/sprite1*.png', 'test_files/sprite2*.jpg', 'test_files/sprite3*.png'], retinaSrcFilter: ['test_files/*@2x.{png,jpg}'], dest: 'scratch/sprite.retina.png', retinaDest: 'scratch/sprite.retina@2x.png', destCss: 'scratch/sprite_positions.retina.styl' }, 'jpg,json': { // TODO: This order is forced due to png/jpg ordering. We should fix this. // src: 'test_files/*.{jpg,png}', src: ['test_files/sprite1.png', 'test_files/sprite2.jpg', 'test_files/sprite3.png'], dest: 'scratch/sprite.basic.jpg', destCss: 'scratch/sprite_positions.basic.json', // Use top-down to make maintenance easier algorithm: 'top-down' }, overrides: { src: ['test_files/sprite1.png', 'test_files/sprite2.jpg', 'test_files/sprite3.png'], dest: 'scratch/sprite.overrides.png', destCss: 'scratch/sprite_positions.overrides.styl', cssFormat: 'json', imgOpts: { format: 'jpg' }, algorithm: 'alt-diagonal', engine: 'gmsmith' }, nested: { // TODO: This order is forced due to png/jpg ordering. We should fix this. // src: 'test_files/*.{jpg,png}', src: ['test_files/sprite1.png', 'test_files/sprite2.jpg', 'test_files/sprite3.png'], dest: 'scratch/nested/1/2/spritesheet.png', destCss: 'scratch/3/4/sprite_positions.styl' }, empty: { src: [], dest: 'scratch/sprite.empty.png', destCss: 'scratch/sprite_positions.empty.json' }, cssOpts: { src: ['test_files/sprite1.png', 'test_files/sprite2.jpg', 'test_files/sprite3.png'], dest: 'scratch/sprite.cssOpts.png', destCss: 'scratch/sprite_positions.cssOpts.css', // Use top-down to make maintenance easier algorithm: 'top-down', cssOpts: { cssSelector: function (sprite) { return '#container .' + sprite.name; } } }, cssFunctionTemplate: { src: ['test_files/sprite1.png', 'test_files/sprite2.jpg', 'test_files/sprite3.png'], dest: 'scratch/sprite.cssFunctionTemplate.png', destCss: 'scratch/sprite_positions.cssFunctionTemplate.styl', // Use top-down to make maintenance easier algorithm: 'top-down', cssTemplate: function (data) { // Stringify only the first sprite return JSON.stringify(data.sprites[0], null, 4); } }, cssHandlebarsTemplate: { src: ['test_files/sprite1.png', 'test_files/sprite2.jpg', 'test_files/sprite3.png'], dest: 'scratch/sprite.cssHandlebarsTemplate.png', destCss: 'scratch/sprite_positions.cssHandlebarsTemplate.styl', // Use top-down to make maintenance easier algorithm: 'top-down', cssTemplate: 'test_files/template.handlebars' }, cssVarMap: { src: ['test_files/sprite1.png', 'test_files/sprite2.jpg', 'test_files/sprite3.png'], dest: 'scratch/sprite.cssVarMap.png', destCss: 'scratch/sprite_positions.cssVarMap.styl', // Use top-down to make maintenance easier algorithm: 'top-down', cssVarMap: function (sprite) { sprite.name = sprite.name.replace('sprite', 'icon'); }, // TODO: `cssSpritesheetName` should be tested separately cssSpritesheetName: 'icons' }, retinaMapped: { src: ['test_files/sprite1*.png', 'test_files/sprite2*.jpg', 'test_files/sprite3*.png'], retinaSrcFilter: ['test_files/*@2x.{png,jpg}'], dest: 'scratch/sprite.retinaMapped.png', retinaDest: 'scratch/sprite.retinaMapped@2x.png', destCss: 'scratch/sprite_positions.retinaMapped.styl', // Use top-down to make maintenance easier algorithm: 'top-down', cssVarMap: function (sprite) { sprite.name = sprite.name.replace('sprite', 'icon'); }, cssSpritesheetName: 'icons', cssRetinaSpritesheetName: 'icons_retina', cssRetinaGroupsName: 'icon_groups' }, newer: { src: ['test_files/sprite1.png', 'test_files/sprite2.jpg', 'test_files/sprite3.png'], dest: 'scratch/sprite.newer.png', destCss: 'scratch/sprite_positions.newer.styl' } } }); // Load in grunt-spritesmith grunt.loadTasks('../tasks'); // Load in grunt newer var previousDir = process.cwd(); process.chdir(__dirname + '/../'); grunt.loadNpmTasks('grunt-newer'); process.chdir(previousDir); };