JSPM

  • Created
  • Published
  • Downloads 10542067
  • Score
    100M100P100Q228182F
  • License MIT

Optimise inline SVG with PostCSS.

Package Exports

  • postcss-svgo

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (postcss-svgo) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

postcss-svgo Build Status NPM version Dependency Status

Optimise inline SVG with PostCSS.

Install

With npm do:

npm install postcss-svgo --save

Example

Input

h1 {
    background: url('data:image/svg+xml;charset=utf-8,<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"><circle cx="50" cy="50" r="40" fill="yellow" /></svg>');
}

Output

h1 {
    background: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="40" fill="#ff0"/></svg>');
}

API

svgo([options])

Note that postcss-svgo is an asynchronous processor. It cannot be used like this:

var result = postcss([ svgo() ]).process(css).css;
console.log(result);

Instead make sure your PostCSS runner uses the asynchronous API:

postcss([ svgo() ]).process(css).then(function (result) {
    console.log(result.css);
});

options

encode

Type: boolean Default: undefined

If true, it will encode URL-unsafe characters such as <, > and #; false will decode these characters, and undefined will neither encode nor decode the original input.

plugins

Optionally, you can customise the output by specifying the plugins option. You will need to provide the config in comma separated objects, like the example below. Note that you can either disable the plugin by setting it to false, or pass different options to change the default behaviour.

var postcss = require('postcss');
var svgo = require('postcss-svgo');

var opts = {
    plugins: [{
        removeDoctype: false
    }, {
        removeComments: false
    }, {
        cleanupNumericValues: {
            floatPrecision: 2
        }
    }, {
        convertColors: {
            names2hex: false,
            rgb2hex: false
        }
    }]
};

postcss([ svgo(opts) ]).process(css).then(function (result) {
    console.log(result.css)
});

You can view the full list of plugins here.

Usage

See the PostCSS documentation for examples for your environment.

Contributing

Pull requests are welcome. If you add functionality, then please add unit tests to cover it.

License

MIT © Ben Briggs