Exemplo n.º 1
0
	return function * ({name, spritesheet, sprites, mapOutputDir, templateDir}) {

    var spriter = new SVGSpriter(getOptions(name, spritesheet, sprites, mapOutputDir, templateDir));
    var cwd = sprites.directory;
    var files = yield promisify(glob)('**/*.svg', {cwd: cwd})
    files.forEach(function(file) {
      var filePath = pathUtil.join(cwd, file);
      spriter.add(new File({
        path: filePath,
        base: cwd,
        contents: fs.readFileSync(filePath)
      }));
    });

    spriter.compile(function(err, result, data) {
      if(err) {
        console.log(err);
        return;
      }
      for (var type in result.css) {
        mkdirp.sync(pathUtil.dirname(result.css[type].path));
        fs.writeFileSync(result.css[type].path, result.css[type].contents);
      }
    });

	};
Exemplo n.º 2
0
}, function (err, files) {
    
    files.forEach(function (file) {
        // Create and add a vinyl file instance for each SVG
        spriter.add(
            new File({
                path: file, // Absolute path to the SVG file
                base: cwd, // Base path (see `name` argument
                contents: fs.readFileSync(file) // SVG file contents
            })
        );
    });
    
    // Compile the sprite
    spriter.compile(function (error, result) {
        /* Write `result` files to disk (or do whatever with them ...) */
        for (var mode in result) {
            for (var resource in result[mode]) {
                if (!fs.existsSync(dist)) {
                    mkdirp.sync(path.dirname(dist));
                }
                fs.writeFileSync(dist, result[mode][resource].contents);
            }
        }
    });
});
Exemplo n.º 3
0
function handleFileUpload(request, response) {
    var uploaded_files = request.files.uploaded_files;
    var SVGSpriter = require('svg-sprite');
    var mkdirp = require('mkdirp');
    var path = require('path');
    var fs = require('fs');

    spriter = new SVGSpriter({
        dest: 'public/converted',
        mode: {
            css: {
                render: {
                    css: true
                },
                prefix: '.'
            }
        },
        shape: {
            spacing : {
                padding: 5
            }
        }
    });

    uploaded_files.forEach(function(file){
        var file_name = 'public/uploads/' + file.name;
        var original_filename = file.originalname;
        var uploaded_file_path = __dirname + '/' + file_name;
        spriter.add(
            path.resolve(file_name),
            file_name,
            fs.readFileSync(uploaded_file_path, {encoding: 'utf-8'})
        );
    });

    spriter.compile(function(error, result, data){
        for (var type in result.css) {
            mkdirp.sync(path.dirname(result.css[type].path));
            fs.writeFileSync(result.css[type].path, result.css[type].contents);
        }
        var output = data.css.sprite;
        var css_file_path = __dirname + '/public/converted/css/sprite.css';
        var css_output = fs.readFileSync(css_file_path);
        css_output = css_output.toString().replace(/public--uploads--/g, "");
        css_output = css_output.replace(/svg\//g, "");

        response.render('uploaded_image', {
          converted_image: output,
          css_output: css_output
        });
    });


}
Exemplo n.º 4
0
    .on('end', function () {
      spriter.compile(function (err, result, data) {
        if (err) done(err)
        for (var type in result.css) {
          mkdirp.sync(path.dirname(result.css[type].path))
          fs.writeFileSync(result.css[type].path, result.css[type].contents)
        }
      })

      fs.removeSync(config.tmp, function (err) {
        if (err) done(err)
      })

      debug(' - done')
      done(null)
    })
glob.glob( svgSourceDir + '/*.svg', { cwd: cwd }, function (err, files) {
  files.forEach(function (file) {
    // Create and add a vinyl file instance for each SVG
    spriter.add(new File({
      path: path.join(cwd, file),                         // Absolute path to the SVG file
      base: cwd,                                          // Base path (see `name` argument)
      contents: fs.readFileSync(path.join(cwd, file))     // SVG file contents
    }));
  })

  spriter.compile(function (error, result, data) {
    for (var type in result.symbol) {
      var generatedFilePath = path.join(cwd, svgGeneratedDir, svgGeneratedFileName);
      mkdirp.sync(path.dirname(generatedFilePath));
      fs.writeFileSync(generatedFilePath, result.symbol[type].contents);
    }
  });
});
Exemplo n.º 6
0
router.post('/convert-to-symbol', inlineStyleMw, function(req, res) {
  var spriter = new SVGSpriter(config);
  var name = `svg-${Math.random()}.svg`;
  spriter.add(`./${name}`, `${name}`, req.body.svgData);
  spriter.compile(function(error, result) {
    if (error) {
      res.status(503).send(error);
      return;
    }
    var data = result.symbol.sprite._contents.toString();
    data = data
      .replace(/></g, '>\n<')
      .replace(/id=""/g, '')
      .replace(/\s{2,}/gm, '')
      .replace(/"(?:\s{1,})/gm, '" ');
    res.type('json').status(200).send({
      symbol: data,
      input: req.body.svgData
    });
  });
});
    fs.exists(config.stylusTemplate, function (exists) {
      if (!exists) return done(new Error('Sprite template not found.'))

      spriter.compile(saveFiles)
    })
Exemplo n.º 8
0
					}
				},
				mixin: 'svg-sprite',
				bust: false,
				prefix: ".svg-%s",
				sprite: "sprites.svg",
				example: false,
				dest: "../assets/style/svg/"
			}
		}
	},
	spriter = new SVGSpriter(config);

var files = fs.readdirSync('./svg/');
files.forEach(function (file, i) {
	file = '../assets/svg/' + file;
	spriter.add(path.resolve(file), file, fs.readFileSync(path.resolve(file), {encoding: 'utf-8'}));
});

spriter.compile(function (error, result, cssData) {
	for (var mode in result) {
		if (mode == 'css') {
			for (var type in result[mode]) {
				console.log('writing', result[mode][type].path);
				mkdirp.sync(path.dirname(result[mode][type].path));
				fs.writeFileSync(result[mode][type].path, result[mode][type].contents);
			}
		}
	}
});
Exemplo n.º 9
0
      function(req, res, next) {
        var
          url = '/icon-sets',
          iconsAssetsPath = 'assets/icons/svg',
          icons,
          mode,
          spriterConfig,
          spriter;

        if (req._parsedUrl.pathname.toLowerCase() === url) {
          icons = (req.query.icons || req.query.i || '').split(/[,|;]/g);
          mode = (req.query.mode || req.query.m || 'symbol').split(/[,|;]/g);
          spriterConfig = {
            mode: {},
            transform: []
          };
          mode.forEach(function(m) {
            spriterConfig.mode[m] = true;
          });
          mode = mode[0];
          spriter = new SVGSpriter(spriterConfig);

          icons.forEach(function(name) {
            var
              parts,
              prefixIconName,
              iconName,
              filename,
              virtualIconPath;

            parts = name.split('-');
            iconName = parts.slice(1).join('-');
            prefixIconName = parts.slice(0, 1);
            filename = path.join(iconsAssetsPath, iconName + '.svg');

            parts = path.resolve(filename).split(path.sep);
            virtualIconPath = parts.slice(0, -1).concat(prefixIconName + '-' + parts.slice(-1)).join(path.sep);
            if (fs.existsSync(filename)) {
              spriter.add(
                virtualIconPath,
                null,
                fs.readFileSync(filename, {encoding: 'utf-8'})
              );
            }
          });

          spriter.compile(function(error, result, data){
            if (error) {
              res.setHeader('Content-Type', 'text/plain; charset=utf-8');
              res.statusCode = 500;
              res.end(error + '');
              return;
            }
            try {
              res.setHeader('Content-Type', 'image/svg+xml; charset=utf-8');
              res.statusCode = 200;
              res.end(result[mode].sprite.contents.toString('utf8'));
            }
            catch(e) {
              res.setHeader('Content-Type', 'text/plain; charset=utf-8');
              res.statusCode = 500;
              res.end(e + '');
            }

          });

          return;
        }
        next();
      }