svgo
english | русский
SVG Optimizer is a Nodejs-based tool for optimizing SVG vector graphics files.
Why?
SVG files, especially those exported from various editors, usually contain a lot of redundant and useless information. This can include editor metadata, comments, hidden elements, default or non-optimal values and other stuff that can be safely removed or converted without affecting the SVG rendering result.
What it can do
SVGO has a plugin-based architecture, so almost every optimization is a separate plugin.
Today we have:
convert Path data to relative or absolute (whichever is shorter), convert one segment to another, trim useless delimiters, smart rounding, and much more
enabled
collapse multiple transforms into one, convert matrices to the short aliases, and much more
enabled
remove unknown elements content and attributes, remove attrs with default values
enabled
round numeric values in attributes that take a list of numbers (like viewBox or enable-background)
disabled
remove width/height and add viewBox if it's missing (opposite to removeViewBox, disable it first)
disabled
Want to know how it works and how to write your own plugin? Of course you want to. (동작방법)
Installation
$ [sudo] npm install -g svgoUsage
CLI
Usage:
svgo [OPTIONS] [ARGS]
Options:
-h, --help : Help
-v, --version : Version
-i INPUT, --input=INPUT : Input file, "-" for STDIN
-s STRING, --string=STRING : Input SVG data string
-f FOLDER, --folder=FOLDER : Input folder, optimize and rewrite all *.svg files
-o OUTPUT, --output=OUTPUT : Output file or folder (by default the same as the input), "-" for STDOUT
-p PRECISION, --precision=PRECISION : Set number of digits in the fractional part, overrides plugins params
--config=CONFIG : Config file or JSON string to extend or replace default
--disable=PLUGIN : Disable plugin by name, "--disable=PLUGIN1,PLUGIN2" for multiple plugins
--enable=PLUGIN : Enable plugin by name, "--enable=PLUGIN3,PLUGIN4" for multiple plugins
--datauri=DATAURI : Output as Data URI string (base64, URI encoded or unencoded)
--multipass : Pass over SVGs multiple times to ensure all optimizations are applied
--pretty : Make SVG pretty printed
--indent=INDENT : Indent number when pretty printing SVGs
-r, --recursive : Use with '-f'. Optimizes *.svg files in folders recursively.
-q, --quiet : Only output error messages, not regular status messages
--show-plugins : Show available plugins and exit
Arguments:
INPUT : Alias to --inputwith files:
$ svgo test.svgor:
$ svgo *.svg$ svgo test.svg -o test.min.svg$ svgo test.svg other.svg third.svg$ svgo test.svg other.svg third.svg -o test.min.svg -o other.min.svg -o third.min.svgwith STDIN / STDOUT:
$ cat test.svg | svgo -i - -o - > test.min.svgwith folder
$ svgo -f ../path/to/folder/with/svg/filesor:
$ svgo -f ../path/to/folder/with/svg/files -o ../path/to/folder/with/svg/output$ svgo *.svg -o ../path/to/folder/with/svg/outputwith strings:
$ svgo -s '<svg version="1.1">test</svg>' -o test.min.svgor even with Data URI base64:
$ svgo -s 'data:image/svg+xml;base64,...' -o test.min.svgwith SVGZ:
from
.svgzto.svg:$ gunzip -c test.svgz | svgo -i - -o test.min.svgfrom
.svgto.svgz:$ svgo test.svg -o - | gzip -cfq9 > test.svgz
Other Ways to Use SVGO
as a web app – SVGOMG
as a Nodejs module – examples
as a Grunt task – grunt-svgmin
as a Gulp task – gulp-svgmin
as a Mimosa module – mimosa-minify-svg
as an OSX Folder Action – svgo-osx-folder-action
as a webpack loader – image-webpack-loader
as a Telegram Bot – svgo_bot
as a PostCSS plugin – postcss-svgo
as an Inkscape plugin – inkscape-svgo
as a Sketch plugin - svgo-compressor
as macOS app - Image Shrinker
as a Rollup plugin - rollup-plugin-svgo
Backers
Donations
PayPal: https://www.paypal.me/deepsweet
License and Copyright
This software is released under the terms of the MIT license.
Logo by Yegor Bolshakov.
Last updated
Was this helpful?
