- Run SVGO on current open SVG file, or within text selection, through the extension command
SVGOCD: Optimize current SVG
- Looks for and reads svgo.config.{js, mjs, cjs} file in the workspace
- Configure SVGO plugins directly through the SVGOCDs plugin settings
- Reports file size change upon optimization
Settings can either be configured from the extension settings or having a svgo.config.{js,cjs} file in the workspace directory. A svgo config file will override the extension settings. See the svgo npm package repository for more information about configuration.
/** @type {import('svgo').Config} */
module.exports = {
multipass:
js2svg: {
indent: 2,
pretty: true,
},
plugins: [
{
name: 'sortAttrs',
params: {
xmlnsOrder: 'alphabetical',
},
},
],
};
Supports all default SVGO plugin settings through extension settings (svgocd.plugins.*
). Boolean values to enable/disable or object values for plugin settings can be used. Full list of plugins from https://github.com/svg/svgo :
View all plugin settings
Plugin | Description |
---|---|
cleanupAttrs | cleanup attributes from newlines, trailing, and repeating spaces |
inlineStyles | move and merge styles from <style> elements to element style attributes |
removeDoctype | remove doctype declaration |
removeXMLProcInst | remove XML processing instructions |
removeComments | remove comments |
removeMetadata | remove <metadata> |
removeTitle | remove <title> |
removeDesc | remove <desc> |
removeUselessDefs | remove elements of <defs> without id |
removeXMLNS | removes xmlns attribute (for inline svg, disabled by default) |
removeEditorsNSData | remove editors namespaces, elements, and attributes |
removeEmptyAttrs | remove empty attributes |
removeHiddenElems | remove hidden elements |
removeEmptyText | remove empty Text elements |
removeEmptyContainers | remove empty Container elements |
removeViewBox | remove viewBox attribute when possible |
cleanupEnableBackground | remove or cleanup enable-background attribute when possible |
minifyStyles | minify <style> elements content with CSSO |
convertStyleToAttrs | convert styles into attributes |
convertColors | convert colors (from rgb() to #rrggbb , from #rrggbb to #rgb ) |
convertPathData | convert Path data to relative or absolute (whichever is shorter), convert one segment to another, trim useless delimiters, smart rounding, and much more |
convertTransform | collapse multiple transforms into one, convert matrices to the short aliases, and much more |
removeUnknownsAndDefaults | remove unknown elements content and attributes, remove attrs with default values |
removeNonInheritableGroupAttrs | remove non-inheritable group's "presentation" attributes |
removeUselessStrokeAndFill | remove useless stroke and fill attrs |
removeUnusedNS | remove unused namespaces declaration |
prefixIds | prefix IDs and classes with the SVG filename or an arbitrary string |
cleanupIds | remove unused and minify used IDs |
cleanupNumericValues | round numeric values to the fixed precision, remove default px units |
cleanupListOfValues | round numeric values in attributes that take a list of numbers (like viewBox or enable-background ) |
moveElemsAttrsToGroup | move elements' attributes to their enclosing group |
moveGroupAttrsToElems | move some group attributes to the contained elements |
collapseGroups | collapse useless groups |
removeRasterImages | remove raster images (disabled by default) |
mergePaths | merge multiple Paths into one |
convertShapeToPath | convert some basic shapes to <path> |
convertEllipseToCircle | convert non-eccentric <ellipse> to <circle> |
sortAttrs | sort element attributes for epic readability |
sortDefsChildren | sort children of <defs> in order to improve compression |
removeDimensions | remove width /height and add viewBox if it's missing (opposite to removeViewBox, disable it first) (disabled by default) |
removeAttrs | remove attributes by pattern (disabled by default) |
removeAttributesBySelector | removes attributes of elements that match a css selector (disabled by default) |
removeElementsByAttr | remove arbitrary elements by ID or className (disabled by default) |
addClassesToSVGElement | add classnames to an outer <svg> element (disabled by default) |
addAttributesToSVGElement | adds attributes to an outer <svg> element (disabled by default) |
removeOffCanvasPaths | removes elements that are drawn outside of the viewbox (disabled by default) |
removeStyleElement | remove <style> elements (disabled by default) |
removeScriptElement | remove <script> elements (disabled by default) |
reusePaths | Find duplicated elements and replace them with links (disabled by default) |
- fix: clear config from require cache before importing
- feature: update svgo to v3
- fix: optimize() now throws all errors
- fix: sortAttrs is now enabled by default
- fix: rename cleanupIDs to cleanupIds
- docs: update config section to reflect CJS requirement
- fix: update configuration settings with new types and import strategy
- docs: update example svg
- docs: update changelog to match version
- feature: update svgo to v2 and support new config file setup
- chore: use esbuild for bundling
- chore: update eslint and prettier packages
- ci: migrate from devops pipelines to github actions
- chore: migrate from npm to pnpm
Skipped
- chore(package): update prettier to major version 2
- chore(package): update SVGO (1.3.2) and other patch releases
- fix: read config on command run (#25)
- fix: calculate size based on svgo input/output (#25)
- chore: update lock file with audit fix (#24)
- fix: read conf on workspace change (#23)
- feature: add percentage file size change after optimization (by @lazreg87)
- docs: update readme
- chore: replace tslint with eslint and add prettier
- feature: support optimizing currently selected text
- feature: support reading .svgo.yml
- feature: support js2svg settings for pretty printing
- fix: use HTTPS protocol for repo link in package.json
- docs: update CHANGELOG.md
- fix: add status message on SVGO runs
- docs: fix README typos
- docs: add tags and categories to package.json
- ci: add publish scripts to package.json
- feature: add configuration support
- feature: add command for optimizing current SVG