svg/svgo


tiger Node.js tool for optimizing SVG files

License: Other

Language: JavaScript

Keywords: cli, javascript, minification, nodejs, optimization, svg, svgo


english | русский


logo

SVGO NPM version Build Status Coverage Status

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:

Plugin Description Default
cleanupAttrs cleanup attributes from newlines, trailing, and repeating spaces enabled
inlineStyles move and merge styles from <style> elements to element style attributes enabled
removeDoctype remove doctype declaration enabled
removeXMLProcInst remove XML processing instructions enabled
removeComments remove comments enabled
removeMetadata remove <metadata> enabled
removeTitle remove <title> enabled
removeDesc remove <desc> enabled
removeUselessDefs remove elements of <defs> without id enabled
removeXMLNS removes xmlns attribute (for inline svg) disabled
removeEditorsNSData remove editors namespaces, elements, and attributes enabled
removeEmptyAttrs remove empty attributes enabled
removeHiddenElems remove hidden elements enabled
removeEmptyText remove empty Text elements enabled
removeEmptyContainers remove empty Container elements enabled
removeViewBox remove viewBox attribute when possible enabled
cleanupEnableBackground remove or cleanup enable-background attribute when possible enabled
minifyStyles minify <style> elements content with CSSO enabled
convertStyleToAttrs convert styles into attributes enabled
convertColors convert colors (from rgb() to #rrggbb, from #rrggbb to #rgb) enabled
convertPathData convert Path data to relative or absolute (whichever is shorter), convert one segment to another, trim useless delimiters, smart rounding, and much more enabled
convertTransform collapse multiple transforms into one, convert matrices to the short aliases, and much more enabled
removeUnknownsAndDefaults remove unknown elements content and attributes, remove attrs with default values enabled
removeNonInheritableGroupAttrs remove non-inheritable group's "presentation" attributes enabled
removeUselessStrokeAndFill remove useless stroke and fill attrs enabled
removeUnusedNS remove unused namespaces declaration enabled
prefixIds prefix IDs and classes with the SVG filename or an arbitrary string disabled
cleanupIDs remove unused and minify used IDs enabled
cleanupNumericValues round numeric values to the fixed precision, remove default px units enabled
cleanupListOfValues round numeric values in attributes that take a list of numbers (like viewBox or enable-background) disabled
moveElemsAttrsToGroup move elements' attributes to their enclosing group enabled
moveGroupAttrsToElems move some group attributes to the contained elements enabled
collapseGroups collapse useless groups enabled
removeRasterImages remove raster images disabled
mergePaths merge multiple Paths into one enabled
convertShapeToPath convert some basic shapes to <path> enabled
convertEllipseToCircle convert non-eccentric <ellipse> to <circle> enabled
sortAttrs sort element attributes for epic readability disabled
sortDefsChildren sort children of <defs> in order to improve compression enabled
removeDimensions remove width/height and add viewBox if it's missing (opposite to removeViewBox, disable it first) disabled
removeAttrs remove attributes by pattern disabled
removeAttributesBySelector removes attributes of elements that match a css selector disabled
removeElementsByAttr remove arbitrary elements by ID or className disabled
addClassesToSVGElement add classnames to an outer <svg> element disabled
addAttributesToSVGElement adds attributes to an outer <svg> element disabled
removeOffCanvasPaths removes elements that are drawn outside of the viewbox disabled
removeStyleElement remove <style> elements disabled
removeScriptElement remove <script> elements disabled
reusePaths Find duplicated elements and replace them with links disabled

Want to know how it works and how to write your own plugin? Of course you want to. (동작방법)

Installation

$ [sudo] npm install -g svgo

Usage

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 --input
  • with files:

    $ svgo test.svg

    or:

    $ 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.svg
  • with STDIN / STDOUT:

    $ cat test.svg | svgo -i - -o - > test.min.svg
  • with folder

    $ svgo -f ../path/to/folder/with/svg/files

    or:

    $ svgo -f ../path/to/folder/with/svg/files -o ../path/to/folder/with/svg/output
    $ svgo *.svg -o ../path/to/folder/with/svg/output
  • with strings:

    $ svgo -s '<svg version="1.1">test</svg>' -o test.min.svg

    or even with Data URI base64:

    $ svgo -s 'data:image/svg+xml;base64,...' -o test.min.svg
  • with SVGZ:

    from .svgz to .svg:

    $ gunzip -c test.svgz | svgo -i - -o test.min.svg

    from .svg to .svgz:

    $ svgo test.svg -o - | gzip -cfq9 > test.svgz

Other Ways to Use SVGO

Backers

SheetJS LLC Fontello

Donations

License and Copyright

This software is released under the terms of the MIT license.

Logo by Yegor Bolshakov.

Project Statistics

Sourcerank 19
Repository Size 1.51 MB
Stars 14,131
Forks 1,052
Watchers 254
Open issues 314
Dependencies 214
Contributors 136
Tags 70
Created
Last updated
Last pushed

Top Contributors See all

Lev Solntsev strarsis David Yan Cyril Auburtin David Leston Vasiliy Roman Dvornov Kalashnikov Igor Benny Schudel Nathan Muir Kir Belevich Alex Lockwood Xander Jake Archibald Eli Dupuis Vicente Canales Philipp Hagemeister Sean Anderson Yoshiya Hinosawa Jason

Packages Referencing this Repo

svgo
Nodejs-based tool for optimizing SVG vector graphics files
Latest release 1.3.2 - Updated - 14.1K stars
@lamartire/svgo
Nodejs-based tool for optimizing SVG vector graphics files
Latest release 1.3.2 - Published - 14.1K stars
@catenda/svgo
Nodejs-based tool for optimizing SVG vector graphics files
Latest release 1.3.2-color - Published - 14.1K stars
svgo-lite
Nodejs-based tool for optimizing SVG vector graphics files
Latest release 1.1.1 - Published - 14.1K stars
@jongleberry/svgo
Nodejs-based tool for optimizing SVG vector graphics files
Latest release 1.0.0 - Published - 14.1K stars
svgogo
Nodejs-based tool for optimizing SVG vector graphics files
Latest release 1.0.6 - Updated - 14.1K stars
baldwmic-svgo
Nodejs-based tool for optimizing SVG vector graphics files
Latest release 0.7.1 - Published - 14.1K stars
svgo-icons
Nodejs-based tool for optimizing SVG vector graphics files with modifications for icons
Latest release 0.6.0 - Updated - 14.1K stars
svgo
Nodejs-based tool for optimizing SVG vector graphics files.
Latest release 1.0.4 - Published - 14.1K stars
org.webjars.npm:svgo
WebJar for svgo
Latest release 0.7.2 - Updated - 14.1K stars

Recent Tags See all

v1.3.2 October 30, 2019
v1.3.1 October 29, 2019
v1.3.0 July 14, 2019
v1.2.2 April 16, 2019
v1.2.1 April 04, 2019
v1.2.0 February 24, 2019
1.2.0 February 24, 2019
v1.1.1 September 17, 2018
v1.1.0 September 16, 2018
v1.0.5 February 26, 2018
v1.0.4 January 30, 2018
v1.0.3 November 08, 2017
v1.0.2 November 03, 2017
v1.0.1 October 31, 2017
v1.0.0 October 30, 2017

Interesting Forks See all

purplebamboo/svgo-sync
a sync version package for svgo.
JavaScript - MIT - Last pushed - 3 stars
pfan123/svgo-icon
Nodejs-based tool for optimizing SVG vector graphics files.
JavaScript - Last pushed - 2 stars
AMoreaux/svgo
tiger Nodejs-based tool for optimizing SVG vector graphics files
JavaScript - Updated - 1 stars
tshedor/svgo
tiger Nodejs-based tool for optimizing SVG vector graphics files
JavaScript - Last pushed - 1 stars
cdenault/svgo
Nodejs-based tool for optimizing SVG vector graphics files.
JavaScript - Updated - 1 stars

Something wrong with this page? Make a suggestion

Last synced: 2019-10-30 11:01:34 UTC

Login to resync this repository