postcss-svg-fallback

1.5.0 • Public • Published

svg-fallback Build Status

An automatic SVG converter for your CSS files, built on top of the PostCSS ecosystem.

Usage

Right now it is only possible to use this as a PostCSS plugin:

var postcss = require('postcss')
var svgFallback = require('postcss-svg-fallback')
 
var input = read(/* read some css */);
postcss()
    .use(svgFallback({
        // base path for the images found in the css
        // this is most likely the path to the css file you're processing
        // not setting this option might lead to unexpected behavior
        basePath: '',
 
        // destination for the generated SVGs
        // this is most likely the path to where the generated css file is outputted
        // not setting this option might lead to unexpected behavior
        dest: '',
 
        // selector that gets prefixed to selector
        fallbackSelector: '.no-svg',
 
        // when `true` only the css is changed (no new files created)
        disableConvert: false,
    })
    .process(input)
    .then(function(processor) {
        var output = processor.toString();
    });

Note: we must use the async version of postcss

Converts this:

.icon {
    background: url(images/sun-is-shining.svg) no-repeat;
    background-size: 20px 20px; /* background-size is mandatory */
}
 
.icon-inline {
    background: url(data:image/svg+xml; .. svg data ..) no-repeat;
    background-size: 20px 20px; /* background-size is mandatory */
}

to this:

.icon {
    /* original declarations are untouched */
    background: url(images/sun-is-shining.svg) no-repeat;
    background-size: 20px 20px;
}
 
/* same selector, but with a prefix */
.no-svg .icon {
    /* a png image is generated and placed in the `dest` folder,
     * with default settings, that's right next to the original SVG
     */
    background-image: url(images/sun-is-shining-20x20.png);
}
 
.icon-inline {
    background: url(data:image/svg+xml; .. svg data ..) no-repeat;
    background-size: 20px 20px; /* background-size is mandatory */
}
 
.no-svg .icon-inline {
    /* filename contains the hash of the svg data */
    background-image: url(3547c094eaf671040650cdcab2ca70fd-20x20.png);
}

Converting is done with PhantomJS and is only done for images that actually need conversion (background-size & mtime).

Package Sidebar

Install

npm i postcss-svg-fallback

Weekly Downloads

18

Version

1.5.0

License

MIT

Unpacked Size

16.6 kB

Total Files

13

Last publish

Collaborators

  • justim