6.2.1 • Published 5 years ago
@elastic/spritezero v6.2.1
@elastic/spritezero
Forked from @mapbox/spritezero
WTF? (Why The Fork?)
The mapbox-gl-js Map.addImage method supports loading icons with SDF (signed distance fields). The icon-color and icon-halo-color properties of the Mapbox Style Specification are only supported on SDF icons.
This fork of the spritezero library adds an options.sdf parameter to the spritezero functions. SDF icons are generated from SVGs using the pathToSDF function in the elastic/fontnik library.
You can see a demo of SDF sprites here.
Usage
var spritezero = require('@elastic/spritezero');
var fs = require('fs');
var glob = require('glob');
var path = require('path');
[1, 2, 4].forEach(function(pxRatio) {
var svgs = glob.sync(path.resolve(path.join(__dirname, 'input/*.svg')))
.map(function(f) {
return {
svg: fs.readFileSync(f),
id: path.basename(f).replace('.svg', '')
};
});
var pngPath = path.resolve(path.join(__dirname, 'output/sprite@' + pxRatio + '.png'));
var jsonPath = path.resolve(path.join(__dirname, 'output/sprite@' + pxRatio + '.json'));
// Pass `true` in the layout parameter to generate a data layout
// suitable for exporting to a JSON sprite manifest file.
spritezero.generateLayout({ imgs: svgs, pixelRatio: pxRatio, sdf: true, format: true }, function(err, dataLayout) {
if (err) return;
fs.writeFileSync(jsonPath, JSON.stringify(dataLayout));
});
// Pass `false` in the layout parameter to generate an image layout
// suitable for exporting to a PNG sprite image file.
spritezero.generateLayout({ imgs: svgs, pixelRatio: pxRatio, sdf: true, format: false }, function(err, imageLayout) {
spritezero.generateImage(imageLayout, function(err, image) {
if (err) return;
fs.writeFileSync(pngPath, image);
});
});
});Installation
Requires nodejs v10.0.0 or greater.
$ npm install @elastic/spritezeroExecutable
@elastic/spritezero-cli is an executable for bundling and creating your own sprites from a folder of svg's:
$ npm install -g @elastic/spritezero-cli
$ spritezero --help
Usage:
spritezero [output filename] [input directory]
--retina shorthand for --ratio=2
--ratio=[n] pixel ratio
--sdf generate sdf sprites