JSPM

  • Created
  • Published
  • Downloads 21987985
  • Score
    100M100P100Q245251F

Nodejs-based tool for optimizing SVG vector graphics files

Package Exports

  • svgo
  • svgo/bin/svgo
  • svgo/lib/svgo
  • svgo/plugins/_collections.js
  • svgo/plugins/cleanupAttrs
  • svgo/plugins/cleanupEnableBackground
  • svgo/plugins/collapseGroups
  • svgo/plugins/convertColors
  • svgo/plugins/convertPathData
  • svgo/plugins/convertPathData.js
  • svgo/plugins/convertStyleToAttrs
  • svgo/plugins/convertStyleToAttrs.js
  • svgo/plugins/convertTransform
  • svgo/plugins/convertTransform.js
  • svgo/plugins/moveElemsAttrsToGroup
  • svgo/plugins/removeComments
  • svgo/plugins/removeComments.js
  • svgo/plugins/removeDoctype
  • svgo/plugins/removeEditorsNSData
  • svgo/plugins/removeEmptyAttrs
  • svgo/plugins/removeEmptyContainers
  • svgo/plugins/removeEmptyText
  • svgo/plugins/removeHiddenElems
  • svgo/plugins/removeMetadata
  • svgo/plugins/removeUnusedNS
  • svgo/plugins/removeViewBox
  • svgo/plugins/removeXMLProcInst

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 (svgo) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

o-o o   o o--o o-o
 \   \ /  |  | | |
o-o   o   o--o o-o
             |
          o--o

SVGO v0.0.9 Build Status

SVG Optimizer is a Nodejs-based tool for optimizing SVG vector graphics files.

Why?

SVG files, especially exported from various editors, usually contains a lot of redundant and useless information such as editor metadata, comments, hidden elements, default or non-optimal values and other stuff that can be safely removed or converted without affecting SVG rendering result.

What it can do

SVGO has a plugin-based architecture, so almost every optimization is a separate plugin.

Today we have:

  • [ > ] cleanup attributes from newlines, trailing and repeating spaces
  • [ > ] remove doctype declaration
  • [ > ] remove XML processing instructions
  • [ > ] remove comments
  • [ > ] remove metadata
  • [ > ] remove editors namespaces, elements and attributes
  • [ > ] remove empty attributes
  • [ > ] remove default "px" unit
  • [ > ] remove a lot of hidden elements
  • [ > ] remove empty Text elements
  • [ > ] remove empty Container elements
  • [ > ] remove viewBox attribute
  • [ > ] remove or cleanup enable-background attribute
  • [ > ] cleanup SVG element from useless attributes
  • [ > ] convert styles into attributes
  • [ > ] convert colors (from rgb() to #rrggbb, from #rrggbb to #rgb)
  • [ > ] convert Path data to relative, trim useless delimiters and much more
  • [ > ] collapse multiple transforms into one, convert matrices to the short aliases and much more
  • [ > ] remove unused namespaces declaration
  • [ > ] move elements attributes to the existing group wrapper
  • [ > ] collapse groups

Want to know how it works and how to write your own plugin? Of course you want to.

How to use

npm install -g svgo
Usage:
  svgo [OPTIONS] [ARGS]

Options:
  -h, --help : Help
  -v, --version : Version
  -i INPUT, --input=INPUT : Input: stdin (default) | filename | Data URI base64 string
  -o OUTPUT, --output=OUTPUT : Output: stdout (default) | filename
  -c CONFIG, --config=CONFIG : Local config file to extend default
  --disable=DISABLE : Disable plugin by name
  --enable=ENABLE : Enable plugin by name
  --datauri : Output as Data URI base64 string
  --pretty : Make SVG pretty printed
  --test : Make a visual comparison of two files (PhantomJS pre-required)

With files:

svgo -i test.svg -o test.min.svg

With stdin / stdout:

cat test.svg | svgo > test.min.svg

With Data URI base64 strings:

svgo -i 'data:image/svg+xml;base64,…' -o test.min.svg

TODO

  1. batch folder optimization
  2. more plugins
  3. SVGO GUI (crossplatform?) via awesome node-webkit
  4. online SVGO web service
  5. more unit tests