Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

svgo-browser

rtivital174.5kMIT1.3.8

svgo tool for browser and node usage

svgo, svg, optimize, minify

readme

SVGO Browser

This package is fork of original svgo tool and focused on two things:

  • providing support for browser usage
  • better svgo api for node.js interface

This readme includes documentation only for changes and does not cover original features. To get more information about svgo please refer to original repository

Installation

npm install svgo-browser

yarn add svgo-browser

Usage

svgo-browser can be used as is with node, but only with build tools (webpack, rollup, parcel, .etc) in browser as it uses node require syntax under the hood. Package includes everything from original svgo plus some extra helpers that can be imported separately.

Usage with build tool

Was tested to work properly with webpack

// Test data will be used in all examples to illustrate output
const testData = `
  <svg version="1.1" width="10" height="20">
      test
  </svg>
`;

Optimize with all default configuration:

import optimize from 'svgo-browser/lib/optimize';

optimize(testData).then(console.log); // -> <svg viewBox="0 0 10 20">test</svg>

Get separate instance:

import getSvgoInstance from 'svgo-browser/lib/get-svgo-instance';

const svgo = getSvgoInstance();
svgo.optimize(testData).then(console.log); // -> { data: "<svg viewBox="0 0 10 20">test</svg>", info: {}}

Provide plugins to svgo instance:

import getSvgoInstance from 'svgo-browser/lib/get-svgo-instance';

// everything included in default configuration
const svgo = getSvgoInstance({
  cleanupAttrs: true,
  removeDoctype: true,
  removeXMLProcInst: true,
  removeComments: true,
  removeMetadata: true,
  removeTitle: true,
  removeDesc: true,
  removeUselessDefs: true,
  removeEditorsNSData: true,
  removeEmptyAttrs: true,
  removeHiddenElems: true,
  removeEmptyText: true,
  removeEmptyContainers: true,
  removeViewBox: false,
  cleanupEnableBackground: true,
  convertStyleToAttrs: true,
  convertColors: true,
  convertPathData: true,
  convertTransform: true,
  removeUnknownsAndDefaults: true,
  removeNonInheritableGroupAttrs: true,
  removeUselessStrokeAndFill: true,
  removeUnusedNS: true,
  cleanupIDs: true,
  cleanupNumericValues: true,
  moveElemsAttrsToGroup: true,
  moveGroupAttrsToElems: true,
  collapseGroups: true,
  removeRasterImages: false,
  mergePaths: true,
  convertShapeToPath: true,
  sortAttrs: true,
  removeDimensions: true,
  removeAttrs: {
    attrs: '(stroke|fill)',
  },
});

svgo.optimize(testData).then(console.log); // -> <svg viewBox="0 0 10 20">test</svg>

changelog

[ > ] 1.3.2 / 30.10.2019

  • Fixed TypeError: Cannot set property 'multipassCount' of undefined

[ > ] 1.3.1 / 29.10.2019

  • Updated CSSO version to 4.0.2 fixing the issue with empty semicolons ";;" in styles (thanks to @strarsis and @lahmatiy).
  • prefixIds plugin now runs only once with --multipass option (by @strarsis).
  • cleanupIDs plugin is prevented from producing a preserved ID, including one which matches a preserved prefix, when minifying (by @thomsj).

[ > ] 1.3.0 / 14.07.2019

  • Custom plugins now can be loaded from external js through path plugin param.
  • New plugin convertEllipseToCircle to convert ellipse with equal radius measures to circle (by @tigt).
  • New plugin sortDefsChildren for improved compression (by @davidleston).
  • SVGO now removes unnecessary spaces after arcto path command flags.
  • removeDimensions plugin now adds viewBox if it's missing (by @adipascu).
  • Fixed removeUnusedNS not counting attributes in <svg> tag itself.
  • Fixed an issue with incorrect processing multiple images (by @cyberalien).
  • Fixed an error with incorrect converting multiple segmented curve to an arc.
  • Fixed an error with matrix decomposition in convertTransform due to rounding error leading to illegal value.
  • Added force option for mergePaths plugin (by @goyney).
  • Added options to prefixIds plugin for selectively prefixing IDs and/or classes (by @strarsis).
  • Exported config function (by @1000ch).

[ > ] 1.2.2 / 16.04.2019

  • Update js-yaml for Code Injection warning (by @kaungst).

[ > ] 1.2.1 / 04.04.2019

Some goodness from pull-requests.

  • Bump up js-yaml version to fix DoS vulnerability (by @eugestarr).

[ > ] 1.2.0 / 24.02.2019

Some goodness from pull-requests.

  • Fixed extra blank lines when processing many files (by @panczarny).
  • Added --recursive option to process folders recursevely with option -f (by @dartess).
  • Added removeAttributesBySelector plugin to remove elements matching a css selector (by @bmease).
  • Added removeOffCanvasPaths plugin to remove elements outside of the viewbox (by @JoshyPHP).
  • removeAttrs plugin: added preserveCurrentColor color (by @roblevintennis) and 3rd optional filter for a value (by @Herman-Freund).
  • Added reusePaths plugin to replace duplicated elements with link (by @jhowcrof).
  • Added support of comma-separated plugins list in --disable and --enable options (by @jmwebservices).
  • Added option to preserve IDs based on prefix in cleanupIDs plugin (by @bkotzz).
  • Replaced colors dependency with chalk (by @xPaw).

[ > ] 1.1.1 / 17.09.2018

  • Fixed crash in SVGO.optimize() when ‘info’ is absent.
  • Removed extra space after cleanupListOfValues plugin.

[ > ] 1.1.0 / 16.09.2018

  • Fixed collapseGroups plugin removing property with a child having inherit value.
  • version attribute value is not more being rounded.
  • Fixed jsAPI clone method with respect to the introduced CSS classes.
  • Fixed scaling strokes with vector-effect="non-scaling-stroke" (by @alexjlockwood).
  • Fixed passing properties from groups in collapseGroups plugin if child have a filter (by @stristr).
  • Fixed arc path commands parsing without separators after flags, effectively producing a JS error.
  • Fixed viewBox separators parsing.
  • Fixed removeNonInheritableGroupAttrs plugin to work as intended.
  • Fixed removing path segments without length in presence of stroke-linecap.
  • Fixed removeUnknownsAndDefaults plugin removing attributes from elements with id.
  • Fixed converting to large arcs from nearly straight lines curves.
  • Fixed collapseGroups plugin affecting <switch> and its subgroups.
  • Fixed convertTransform plugin converting to rotate() with wrong sign in some case.
  • Fixed cleanupListOfValues plugin not preserving non-numeric values.
  • Fixed !important being passed to attributes in convertStyleToAttrs plugin.
  • Added option keepImportant to convertStyleToAttrs plugin to preserve styles with !important.
  • removeHiddenElems plugin now also removes elements with visibility="hidden" attribute (by @mikolaj92).
  • Added forceAbsolutePath option to convertPathData plugin to always use absolute coordinates (by @cool).
  • Added keepRoleAttr for removeUnknownsAndDefaults plugin to preserve role- attributes (by @himedlooff).
  • Added xmlns order option in sortAttrs plugin (by @hellatan).
  • Added an option to prefixIds plugin to pass prefix as false or as a function that returns false (by @vzaidman).
  • prefixIds plugin now adds prefix to every class (by @vzaidman).
  • Updated and improved docs a bit (multiple authors).

[ > ] 1.0.5 / 26.02.2018

  • Fixed issue with prefixIDs plugin not replacing url() values correctly (by @harrisjose).

[ > ] 1.0.4 / 30.01.2018

  • Fixed bug with removing groups that are direct child of "<switch>".
  • Fixed bug with shorthand path points counting (thanks @alexjlockwood for noticing).
  • Fixed crash on parsing invalid transform, e.g. without close parenthesis.

[ > ] 1.0.3 / 08.11.2017

  • Fixed removeViewBox plugin to check for zero start coordinates.
  • Removed extra info from STDOUT when it set to output.

[ > ] 1.0.2 / 03.11.2017

  • Fixed a couple of errors related to inlineStyles plugin.
  • Updated some lost details in documentation to reflect v1.0 changes.

[ > ] 1.0.1 / 31.10.2017

  • Fixed error “Object.defineProperty called on non-object” in images with <foreignObject/>.

[ > ] 1.0.0 / 30.10.2017

  • SVGO now requires Node 4 or higher.
  • Changed CLI syntax to treat filenames as input, thus allowing svgo *.svg syntax.
  • SVGO.optimize() now returns Promise.
  • Added datauri option to JS API.
  • Added support for SVG 2 href attribute.
  • cleanupIDs now don't removes IDs if an image consists only of defs.
  • New plugin inlineStyles for converting styles from <style> element to attributes if possible (by @strarsis).
  • cleanupNumericValues now rounds values in viewBox (by @caub).
  • New plugin: removeScriptElement (disabled by default) to align with removeStyleElement (by @pklingem).
  • minifyStyles now removes styles based on usage with controlling options (by @lahmatiy).
  • New option except in cleanupIDs to keep IDs (by @Velenir).
  • New option force in cleanupIDs to work even if SVG contains style or script elements (by @Velenir).
  • Fixed arcs transforming with different signed scale parameters (by @JoshyPHP).
  • Fixed removeUselessStrokeAndFill to check for style or script elements per file (by @caub).
  • New option keepAriaAttrs in removeUnknownsAndDefaults (by @davidtheclark).
  • Corrected parsing in cleanupIDs to account animation syntax (by @caub).
  • #ff0000 now converts to red as well as #f00 (by @davidleston).
  • Added “gray” variation to colors list per CSS Color Module Level 4 (by @ydaniv).
  • Fixed error on empty files.
  • A separator character in removeAttrs now can be changed per elemSeparator option (by @mikestreety).
  • addAttributesToSVGElement now can add values to attributes.

[ > ] 0.7.2 / 29.01.2017

  • Extended currentColor match conditions (string, rx, bool) (by @AlimovSV)
  • Fixed removing <animate> in <stop>.
  • Fixed removing same transform in inner element in removeUnknownsAndDefaults.
  • Fixed collapsing groups with same non-inheritable attribute.
  • Corrected removing of leading zero in case of exponential notation.

[ > ] 0.7.1 / 27.09.2016

  • Reverted the requirement of Node.js to version 0.10.
  • Added addAttributesToSVGElement to the default config to allow using it with --enable option.
  • Added korean translation of “How it works” doc (by @primeiros).

[ > ] 0.7.0 / 25.08.2016

  • Required Node.js version has increased to 0.12.
  • New plugins: removeElementsByAttr (by IDs or classes) by @elidupuis, addAttributesToSVGElement by @gjjones, removeXMLNS (for SVG inlining) by @ricardobeat.
  • Tests now correctly pass in Windows with CRLF line endings. Pretty print now accounts system line endings.
  • Fixed bugs with collapsing groups with masks and transforms in collapseGroups.
  • Fixed bugs with erroneous removing IDs in cleanupIDs.
  • Improved attributes sorting in sortAttrs by @darktrojan.
  • addClassesToSVGElement no more repeats classes (by @ricardobeat).

[ > ] 0.6.6 / 25.04.2016

  • Corrected CSSO API usage

[ > ] 0.6.5 / 25.04.2016

  • Extra content inserted by editors are now being removed within <foreignObject> as well thus fixing bug “Namespace prefix … is not defined“ after applying SVGO.
  • Doctype with entities declaration is now also being removed since svgo correctly parses them starting from the version 0.6.2.
  • Corrected moveGroupAttrsToElems not to move attributes to g content if it's referenced (has an id).
  • collapseGroups now don't collapse a group if it has an animated attribute (SMIL).

[ > ] 0.6.4 / 05.04.2016

  • Fixed bug in “convertStyleToAttrs” plugin with converting styling properties to non-existent attributes (which are normally removed later by removeUnknownsAndDefaults).
  • Added --indent option to style pretty-printed SVG. (e.g. --indent 2) (by @scurker).
  • Added currentColor param to convertColors plugin for converting values like fill and stroke to currentColor (by @scurker).
  • Bumped CSSO to the current version and used its new shiny API (thanks to @lahmatiy).

[ > ] 0.6.3 / 20.03.2016

  • Smart rounding (introduced in 0.4.5) now applies only when rounding is needed, thus making subsequent passes more stable.
  • Fixed regression in converting curves to arcs.
  • xlink:href references are now being checked by local name href, thus correctly working with another namespace prefix.
  • Fixed id removing with disabled plugins/convertStyleToAttrs.js.

[ > ] 0.6.2 / 08.03.2016

  • Better error handling and messaging improvements.
  • SVG files with XML entities (e.g. from Adobe Illustrator) are now correctly being parsed.
  • Fixed error on converting curves to arcs.
  • Corrected rounding in subsequent passes with --multipass option.
  • Data URI option now handles charset (by @holymonson)
  • Transformations are no longer moved to group if there is a mask (plugins/moveElemsAttrsToGroup.js).
  • Fixed matrix decomposition losing sign in case like [1, 0, 0, -1, 0, 0] (scale(1 -1)).
  • Fixed crash on uppercased color name.
  • Paths with id and without stroke-width aren't being transformed now since stroke-width may be applied later.

[ > ] 0.6.1 / 21.11.2015

  • Added option --quiet to suppress output (by @phihag).
  • Removed lib-cov folder from the package, which was erroneously included before.
  • Fixed errors in “minifyStyles” when there are <style> elements with CDATA content or without content at all.
  • Amended transform functions parsing to prevent errors when there are no separators between numbers (which isn't allowed by syntax, but understood by browsers).

[ > ] 0.6.0 / 08.11.2015

  • New optimization: circular curves now being converted to arcs. A notable improvement for circles within paths.
  • New plugin “minifyStyles” which minifies <style> elments content with CSSO by @strarsis (svgo still doesn't understand its content)
  • New plugin “removeStyleElement” (disabled by default) by @betsydupuis.
  • Fixed issues with parsing numbers with exponent fraction (could happen with high precision >= 7).
  • Fixed rounding error due to incorrect preserving of precision in transformations.
  • Fixed shorthand curve distortion due to converted previous curve to not a curve.
  • Fixed interoperability issue with precision cli-option and full config.
  • Fixed an error produced by “removeUnknownsAndDefaults” by @thiakil
  • Another Inkscape prefix namespace is being removed.
  • Fixed an issue in moveElemsAttrsToGroup“” with transforms moved around clip-path.

[ > ] 0.5.6 / 13.08.2015

  • Fixed paths removing.

[ > ] 0.5.5 / 05.08.2015

  • Reverted debugging changes.

[ > ] 0.5.4 / 05.08.2015

  • New parameter useShortTags by @bradbarrow. Now svgo can produce correct non-selfclosing tags (useful in HTML in old browsers).
  • Fixed failing on empty transformation (which could be produced by two opposite).
  • Fixed removing paths which have numbers with exponent notation.
  • Fixed a bug with arc transformation.
  • Some typo fixes.

[ > ] 0.5.3 / 21.06.2015

  • Fixed breaking related to rounding functions in “convertTransform”.
  • Fixed a bug with ID in animations not being worked on by “cleanupIDs”.
  • Fixed a bug with quoted reference in url().
  • Now, if there are several same IDs in the document, then the first one is used and others are being removed.
  • New command-line option --show-plugins displaying list of plugins.
  • Two new optional plugins: “removeDimensions” (removes width and height if there is viewBox) and “removeAttrsPlugin” (by @bennyschudel).

[ > ] 0.5.2 / 24.05.2015

  • Introduced new transformPrecision option for better image quality (defaults to 5) in “convertTransform” and “convertPathData” (for the purpose of applying transformations) plugins.
  • Matrix transformations now can be decomposed into a combination of few simple transforms like translate, rotate, scale.
  • Arcs (paths arcto command) are now correctly being transformed into another arcs without being converting to Bezier curves.
  • Fixed an issue with “mergePaths” failing to detect paths intersection in some cases.
  • Fixed a bug with “removeUnknownsAndDefaults” removing some paths, which was introduced in v0.5.1.
  • Fixed a bug with transformation having rotate() with optional parameters.
  • Patterns with inherited attributes are no longer being removed.
  • Styles are no longer being removed from <desc> (by @dennari).
  • SVGO no longer breaks during parsing.
  • Added clone() method to JSAPI (by @jakearchibald)

[ > ] 0.5.1 / 30.03.2015

  • added new command-line option to set precision in floating point numbers.
  • fixed all known image-disruptive bugs
  • Notably mergePaths plugin now checks for possible intersections to avoid side-effects
  • new plugin removeUselessDefs to remove elements in <defs> and similar non-rendering elements without an id and thus cannot be used
  • fix for --multipass command line option (by @dfilatov)
  • improved cleanupEnableBackground and convertColors plugins (by @YetiOr)
  • new plugin for image manipulation cleanupListOfValues (by @kiyopikko)
  • fixed fail on comments after closing root </svg> tag
  • updated parsing to account meaningful spaces in <text>
  • data-* attributes are now preserved in removeUnknownsAndDefaults
  • prevented plugins from failing in <foreignObject>
  • cleanupNumericValues plugin now converts other units to pixels (if it's better)
  • removeUselessStrokeAndFill plugin is enabled again with correct work in case of inherited attributes
  • fixed fail on images with incorrect paths like <path d="z"/>
  • svgo now understands if an input is a folder (remember, you can set output to folder as well)
  • added support for some properties from SVG 2 like vector-effect="non-scaling-stroke"
  • removed option to remove an id on root <svg> tag in removeUnknownsAndDefaults since it's already being done in cleanupIDs

[ > ] 0.5.0 / 05.11.2014

  • added --multipass command line option which repeatedly applies optimizations like collapsing groups (by @dfilatov)
  • exposed JSAPI as a factory method (by @mistakster)
  • added removeDesc plugin (by @dwabyick), disabled by default
  • removeUselessStrokeAndFill plugin is disabled by default since it's unable to check inherited properties
  • transformations now apply to paths with arcs in plugins/convertPathData
  • a lot of bug fixes mostly related to transformations

[ > ] 0.4.5 / 02.08.2014

  • significally improved plugin plugins/convertPathData:
    • Now data is being written relative or absolute whichever is shorter. You can turn it off by setting utilizeAbsolute to false.
    • Smarter rounding: values like 2.499 now rounds to 2.5. Rounding now takes in account accumulutive error meaning that points will not be misplaced due to rounding more than it neccessary.
    • Fixed couple bugs.
  • --output option now can be a folder along with --folder, thanks to @mako-taco.
  • plugins/cleanupIDs now have prefix option in case you want to combine multiple svg later (by @DanielMazurkiewicz).
  • Quotes now being escaped in attributes (by @ditesh).
  • Minor bugfixes.

[ > ] 0.4.4 / 14.01.2014

  • new plugin plugins/removeTitle (disabled by default, close #159)
  • plugins/convertPathData: skip data concatenation for z instruction in collapseRepeated
  • plugins/removeUnknownsAndDefaults: do not remove overriden attributes with default values (fix #161 and #168)
  • plugins/removeViewBox: disable by default (fix #139)
  • update README with gulp task

[ > ] 0.4.3 / 02.01.2014

[ > ] 0.4.2 / 19.12.2013

  • add lcov.info to npmignore
  • fix js-yaml version to suppress deprecation warning in stdout

[ > ] 0.4.1 / 18.11.2013

  • node >=0.8.0

[ > ] 0.4.0 / 18.11.2013

  • merge almost all pull-requests
  • update dependencies

[ > ] 0.3.7 / 24.06.2013

  • do not remove result attribute from filter primitives (fix #122)
  • plugins/cleanupAttrs: replace newline with space when needed (fix #119)
  • lib/coa: look for config file in current folder
  • lib/coa: always traverse all files in the given folder
  • deprecate svgo-grunt in favor of grunt-svgmin
  • re-enable node-coveralls

[ > ] 0.3.6 / 06.06.2013

  • plugins/removeNonInheritableGroupAttrs: more attrs groups to exclude (fix #116 & #118)
  • lib/coa: optimize folder file by file (temp fix #114)
  • .jshintrc: JSHint 2.0
  • temporarily disable node-coveralls

[ > ] 0.3.5 / 07.05.2013

  • plugins/transformsWithOnePath: fix curves bounding box calculation
  • plugins/transformsWithOnePath: fix possible c+t or q+s bug

[ > ] 0.3.4 / 06.05.2013

  • plugins/convertPathData: fix m->M bug in some cases
  • plugins/transformsWithOnePath: fix last point calculation for C/S/Q/T
  • plugins/mergePaths: add space delimiter between z and m

[ > ] 0.3.3 / 05.05.2013

  • plugins/convertPathData: convert very first m to M, fix applyTransforms with translate() (fix #112)
  • plugins/transformsWithOnePath: fix real width/height rounding; fix scale transform origin; reorder transforms
  • plugins/transformsWithOnePath: ability to set new width or height independently with auto rescaling

[ > ] 0.3.2 / 03.05.2013

  • new plugin plugins/sortAttrs
  • plugins/transformsWithOnePath: buggy hcrop (fix #111)
  • Impossible to set output presision to 0 (no fractional part) (fix #110)
  • Istanbul + coveralls.io
  • update README with NPM version from badge.fury.io
  • update README with dependency status from gemnasium.com
  • npmignore unneeded files
  • reoptimized project logo

[ > ] 0.3.1 / 15.04.2013

  • plugins/transformsWithOnePath: resize SVG and automatically rescale inner Path
  • better errors handling

[ > ] 0.3.0 / 12.04.2013

  • global refactoring: getting rid of the many dependencies
  • new plugin plugins/mergePaths
  • new plugin plugins/transformsWithOnePath (renamed and featured cropAndCenterAlongPath)
  • config: replace default config with full: true
  • coa: JSON string as value of --config
  • coa: different types of Data URI strings (close #105)
  • plugins/_transforms: allow spaces at the beginning of transform
  • Travis CI: Nodejs 0.10 & 0.11
  • node.extendwhet.extend
  • update .gitignore
  • update docs

[ > ] 0.2.4 / 05.04.2013

[ > ] 0.2.3 / 22.02.2013

[ > ] 0.2.2 / 09.02.2013

  • plugins/convertTransforms: wrong translate() shorthand (fix #94)
  • yaml.jsjs-yaml
  • update outdated deps

[ > ] 0.2.1 / 18.01.2013

  • plugins/moveElemsAttrsToGroup + plugins/moveGroupAttrsToElems: move or just leave transform attr from Group to the inner Path Elems (close #86)
  • plugins/removeViewBox: doesn't catch floating-point numbers (fix #88)
  • plugins/cleanupEnableBackground: doesn't catch floating-point numbers (fix #89)
  • plugins/cleanupNumericValues: wrong floating-point numbers regexp (fix #92)
  • SVG file generated by fontcustom.com not properly compressed (fix #90)
  • README.ru.md: стилизация русского языка, улучшение языковых конструкций, правка ошибок (close #91)
  • minor JSHint warning fix

[ > ] 0.2.0 / 23.12.2012

  • plugins/convertPathData: apply transforms to Path pata (close #33)
  • plugins/convertPathData: -1.816-9.278.682-13.604 parsing error (fix #85)
  • plugins/convertTransform: translate(10, 0) eq translate(10), but not translate(10, 10) eq translate(10) (fix #83)
  • run plugins/cleanupIDs before plugins/collapseGroups (fix #84)
  • update .gitignore

[ > ] 0.1.9 / 17.12.2012

  • plugins/cleanupIDs: renamed from removeUnusedIDs; minify used IDs (fix #7)
  • lib/svgo/js2svg: restore HTML entities back (fix #80 + #81)
  • plugins/removeDoctype: do not remove if custom XML entities presents (fix #77)
  • lib/svgo/coa: refactoring, colors and fix #70
  • lib/svgo: store elapsed time in result object
  • usage examples with SVGZ (close #18)
  • more optimized logo
  • update .gitignore

[ > ] 0.1.8 / 11.12.2012

[ > ] 0.1.7 / 08.12.2012

  • plugins/convertPathData: incorrect interpretation of z + m (fix #69)
  • plugins/convertTransform: do a more accurate floating numbers rounding in matrixToTransform() (fix #68)

[ > ] 0.1.6 / 07.12.2012

  • plugins/convertPathData: collapse repeated instructions only after curveSmoothShorthands (fix #64)
  • lib/svgo/coa: handle 'there is nothing to optimize' case and display a message about it (fix #61)
  • plugins/cleanupSVGElem: delete as useless artefact

[ > ] 0.1.5 / 06.12.2012

  • E-notated numbers in paths not recognised (fix #63)
  • update README with svgo-grunt and svgo-osx-folder-action
  • fix mocha-as-promised plug in node 0.6

[ > ] 0.1.4 / 05.12.2012

  • plugins/_collections: more defaults
  • README.ru.md
  • docs/how-it-works/ru.md
  • mocha + mocha-as-promised + chai + chai-as-promised + should + istanbul = <3
  • update dependencies semvers in package.json
  • v0.1.x and v0.2.x milestones

[ > ] 0.1.3 / 30.11.2012

  • new plugin plugins/cleanupNumericValues (close #8)
  • plugins/removeDefaultPx functionality now included in plugins/removeUnknownsAndDefaults
  • plugins/removeUnknownsAndDefaults: refactoring and picking up the complete elems+attrs collection (close #59)
  • plugins/convertTransform: error in matrices multiplication (fix #58)
  • plugins/convertTransform: mark translate() and scale() as useless only with one param (fix #57)
  • plugins/convertPathData: drastic speed improvement with huge Path data
  • plugins/convertPathData: fix the very first Mm with multiple points (fix #56)
  • plugins/moveElemsAttrsToGroup: additional check for transform attr
  • brand-new project logo.svg
  • .travis.yml: build only master branch
  • global 'use strict'
  • .jshintignore
  • README and CHANGELOG: minor corrections

[ > ] 0.1.2 / 24.11.2012

  • lib/svgo/svg2js: correct 'onerror' failure (fix #51)
  • config: disable sax-js position tracking by default (fix #52)
  • lib/svgo: rename 'startBytes' to 'inBytes' and 'endBytes' to 'outBytes' (close #53)
  • plugins/removeUnknownsAndDefaults: remove SVG id attr (close #54)

[ > ] 0.1.1 / 23.11.2012

  • plugins/moveElemsAttrsToGroup: fix inheitable only attrs array (fix #47)
  • plugins/removeEmptyContainers: do not remove an empty 'svg' element (fix #48)
  • plugins/removeDefaultPx: should also understand a floating-numbers too (fix #49)
  • plugins/removeUnknownsAndDefaults: merge multiple groupDefaults attrs (close #50)

[ > ] 0.1.0 / 22.11.2012

  • new plugin plugins/removeUnknownsAndDefaults (close #6)
  • plugins/convertPathData: convert straight curves into lines segments (close #17); remove an absolute coords conversions
  • plugins/convertPathData: convert quadratic Bézier curveto into smooth shorthand (close #31)
  • plugins/convertPathData: convert curveto into smooth shorthand (close #30)
  • lib/svgo: global API refactoring (close #37)
  • lib/svgo: fatal and stupid error in stream chunks concatenation (fix #40)
  • lib/coa: batch folder optimization (close #29)
  • lib/coa: support arguments as aliases to --input and --output (close #28)
  • project logo by Egor Bolhshakov
  • move modules to ./lib/svgo/
  • rename and convert config.json to .svgo.yml
  • add ./docs/
  • plugins/convertPathData: don't remove first M even if it's 0,0
  • plugins/convertPathData: stronger defense from infinite loop
  • plugins/moveElemsAttrsToGroup: should affect only inheritable attributes (fix #46)*
  • plugins/removeComments: ignore comments which starts with '!' (close #43)
  • config: cleanupAttrs should be before convertStyleToAttrs (fix #44)*
  • lib/svgo/jsAPI: add eachAttr() optional context param
  • temporarily remove PhantomJS and --test (close #38)
  • q@0.8.10 compatibility: 'end is deprecated, use done instead' fix
  • add Istanbul code coverage
  • update dependencies versions and gitignore
  • README: add TODO section with versions milestones
  • update README with License section
  • update LICENSE with russian translation
  • .editorconfig: 2 spaces for YAML

[ > ] 0.0.9 / 29.10.2012

  • plugins how-to (close #27)
  • allow any plugin of any type to go in any order (close #14)
  • allow to do a multiple optimizations with one init (close #25)
  • plugins/convertPathData: global refactoring
  • plugins/convertPathData: do all the tricks with absolute coords too (fix #22)
  • plugins/convertPathData: accumulation of rounding errors (fix #23)
  • plugins/convertPathData: prevent an infinity loop on invalid path data (fix #26)
  • plugins/convertPathData: do not remove very first M from the path data (fix #24)
  • plugins/convertPathData: optimize path data in <glyph> and <missing-glyph> (close #20)
  • plugins/convertTransform: add patternTransform attribute to the process (close #15)
  • plugins/convertTransform: Firefox: removing extra space in front of negative number is alowed only in path data, but not in transform (fix #12)
  • plugins/removeXMLProcInst: remove only 'xml' but not 'xml-stylesheet' (fix #21)
  • plugins/collapseGroups: merge split-level transforms (fix #13)
  • jsdoc corrections

[ > ] 0.0.8 / 20.10.2012

  • new plugin convertTransform (close #5)
  • new plugin removeUnusedNS
  • plugins/convertPathData: remove useless segments
  • plugins/convertPathData: a lot of refactoring
  • plugins/convertPathData: round numbers before conditions because of exponential notation (fix #3)
  • plugins/moveElemsAttrsToGroup: merge split-level transforms instead of replacing (fix #10)
  • lib/svg2js: catch and output xml parser errors (fix #4)
  • lib/coa: open file for writing only when we are ready (fix #2)
  • lib/tools: node.extend module
  • lib/plugins: refactoring
  • lib/js2svg: refactoring
  • lib/jsAPI: simplification and refactoring
  • absolute urls in README
  • update .editorconfig
  • update .travis.yml with nodejs 0.9

[ > ] 0.0.7 / 14.10.2012

  • new plugin convertPathData
  • --input data now can be a Data URI base64 string
  • --output data now can be a Data URI base64 string with --datauri flag
  • Travis CI
  • JSHint corrections + .jshintrc
  • .editorconfig
  • display time spent on optimization
  • .svgo → config.json
  • lib/phantom_wrapper.js → lib/phantom.js

[ > ] 0.0.6 / 04.10.2012

  • add --test option to make a visual comparison of two files (PhantomJS pre-required)
  • update README and CHANGELOG with the correct relative urls

[ > ] 0.0.5 / 03.10.2012

  • every plugin now has at least one test
  • removeViewBox, cleanupEnableBackground, removeEditorsNSData, convertStyleToAttrs and collapseGroups plugins fixes
  • new --pretty option for the pretty printed SVG
  • lib/config refactoring

[ > ] 0.0.4 / 30.09.2012

[ > ] 0.0.3 / 29.09.2012

  • plugins/collapseGroups bugfix
  • plugins/moveElemsAttrsToGroup bugfix
  • svgo now display --help if running w/o arguments
  • massive jsdoc updates
  • plugins engine main filter function optimization

[ > ] 0.0.2 / 28.09.2012

  • add --disable and --enable command line options
  • add an empty values rejecting to coa.js
  • update README

[ > ] 0.0.1 / 27.09.2012

  • initial public version