const gulp = require('gulp'), glob = require("glob"), fs = require("fs"), path = require("path"), svg2img = require('svg2img'); gulp.task('icons-sprite', function (cb) { const columnsCount = 16, padding = 30, paddingOuter = 24, iconSize = 24; glob("_site/icons/*.svg", {}, function (er, files) { const iconsCount = files.length, rowsCount = Math.ceil(iconsCount / columnsCount), width = columnsCount * (iconSize + padding) + 2 * paddingOuter - padding, height = rowsCount * (iconSize + padding) + 2 * paddingOuter - padding; let svgContentSymbols = '', svgContentIcons = '', x = paddingOuter, y = paddingOuter; files.forEach(function (file, i) { let name = path.basename(file, '.svg'); let svgFile = fs.readFileSync(file), svgFileContent = svgFile.toString(); svgFileContent = svgFileContent .replace('', '') .replace(/\n\s+/g, ''); svgContentSymbols += `\t${svgFileContent}\n`; svgContentIcons += `\t\n`; x += padding + iconSize; if (i % columnsCount === columnsCount - 1) { x = paddingOuter; y += padding + iconSize; } }); const svgContent = `\n${svgContentSymbols}\n${svgContentIcons}\n`; fs.writeFileSync('icons.svg', svgContent); cb(); }); });