Socket
Socket
Sign inDemoInstall

postcss-svgo

Package Overview
Dependencies
20
Maintainers
7
Versions
52
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    postcss-svgo

Optimise inline SVG with PostCSS.


Version published
Weekly downloads
11M
increased by0.12%
Maintainers
7
Created
Weekly downloads
 

Package description

What is postcss-svgo?

The postcss-svgo package is a plugin for PostCSS that optimizes SVG vector graphics within CSS. It uses SVGO (SVG Optimizer) under the hood to compress SVG images by removing unnecessary data without affecting the rendering of the SVG. This results in smaller file sizes and potentially faster load times for web pages that use SVG images in their stylesheets.

What are postcss-svgo's main functionalities?

Optimize inline SVG with PostCSS

This code sample demonstrates how to use postcss-svgo to optimize inline SVG within CSS. It sets up PostCSS with the postcss-svgo plugin, specifying a configuration object that includes SVGO plugins like 'removeDoctype' to strip out the doctype declaration from SVGs.

"use strict";\nconst postcss = require('postcss');\nconst postcssSvgo = require('postcss-svgo');\n\npostcss()\n  .use(postcssSvgo({\n    plugins: [{\n      removeDoctype: true\n    }]\n  }))\n  .process('a { background: url('data:image/svg+xml;charset=utf-8,<svg>...</svg>'); }')\n  .then(result => {\n    console.log(result.css);\n  });

Other packages similar to postcss-svgo

Readme

Source

postcss-svgo

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>');
}

h2 {
    background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNDAiIGZpbGw9InllbGxvdyIgLz48IS0tdGVzdCBjb21tZW50LS0+PC9zdmc+');
}

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="%23ff0"/></svg>');
}

h2 {
    background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjQwIiBmaWxsPSIjZmYwIi8+PC9zdmc+');
}

API

svgo([options])

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. Note that regardless of this setting, # will always be URL-encoded.

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.

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

const opts = {
    plugins: [{
        name: 'preset-default',
        params: {
            overrides: {
                removeViewBox: false,
                removeComments: false,
                cleanupNumericValues: {
                    floatPrecision: 2
                }
            }
        }
    }]
};


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

You can view the full list of plugins here.

Usage

See the PostCSS documentation for examples for your environment.

Contributors

See CONTRIBUTORS.md.

License

MIT © Ben Briggs

Keywords

FAQs

Last updated on 24 Apr 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc