|
sfcode
An Online Competing and Development Environment
|
english | русский
SVG **O**ptimizer – это инструмент для оптимизации векторной графики в формате SVG, написанный на Node.js.
SVG-файлы, особенно экспортированные из редакторов, содержат много избыточной и бесполезной информации, комментариев, скрытых элементов, неоптимальные или стандартные значения и другой мусор, удаление которого безопасно и не влияет на конечный вид изображения.
SVGO имеет расширяемую архитектуру, в которой почти каждая оптимизация является отдельным расширением.
Что у нас есть:
| Plugin | Description | Default |
|---|---|---|
| cleanupAttrs | удаление переносов строк и лишних пробелов | включен |
| inlineStyles | перенос стилей из элементов <style> в атрибуты style | включен |
| removeDoctype | удаление doctype | включен |
| removeXMLProcInst | удаление XML-инструкций | включен |
| removeComments | удаление комментариев | включен |
| removeMetadata | удаление <metadata> | включен |
| removeTitle | удаление <title> | включен |
| removeDesc | удаление <desc> | включен |
| removeUselessDefs | удаление элементов в <defs> без id | включен |
| removeXMLNS | удаление атрибута xmlns (для заинлайненных svg) | выключено |
| removeEditorsNSData | удаление пространств имён различных редакторов, их элементов и атрибутов | включен |
| removeEmptyAttrs | удаление пустых атрибутов | включен |
| removeHiddenElems | удаление скрытых элементов | включен |
| removeEmptyText | удаление пустых текстовых элементов | включен |
| removeEmptyContainers | удаление пустых элементов-контейнеров | включен |
| removeViewBox | удаление атрибута viewBox, когда это возможно | включен |
| cleanupEnableBackground | удаление или оптимизация атрибута enable-background, когда это возможно | включен |
| minifyStyles | уменьшает содержимое элементов <style> с помощью CSSO. | включен |
| convertStyleToAttrs | конвертирование стилей в атрибуте style в отдельные svg-атрибуты | включен |
| convertColors | конвертирование цветовых значений: из rgb() в #rrggbb, из #rrggbb в #rgb | включен |
| convertPathData | конвертирование данных Path в относительные или абсолютные координаты, смотря что |короче; конвертирование одних типов сегментов в другие; удаление ненужных разделителей; умное округление и тому подобное | включен |
| convertTransform | схлопывание нескольких трансформаций в одну, конвертирование матриц в короткие алиасы |и многое другое | включен |
| removeUnknownsAndDefaults | удаление неизвестных элементов, контента и атрибутов | включен |
| removeNonInheritableGroupAttrs | удаление ненаследуемых "презентационных" атрибутов групп | включен |
| removeUselessStrokeAndFill | удаление неиспользуемых атрибутов stroke-* и fill-* | включен |
| removeUnusedNS | удаление деклараций неиспользуемых пространств имён | включен |
| prefixIds | добавляет префикс в ID или классы в виде имени файла или произвольной строки | выключено |
| cleanupIDs | удаление неиспользуемых и сокращение используемых ID | включен |
| cleanupNumericValues | округление дробных чисел до заданной точности, удаление px как единицы |измерения по-умолчанию | включен |
| cleanupListOfValues | округление числовых значений в атрибутах со списком чисел, таких как viewBox |или enableBackground | выключено |
| moveElemsAttrsToGroup | перемещение совпадающих атрибутов у всех элементов внутри группы <g> | включен |
| moveGroupAttrsToElems | перемещение некоторых атрибутов группы на элементы внутри | включен |
| collapseGroups | схлопывание бесполезных групп <g> | включен |
| removeRasterImages | удаление растровых изображений | выключено |
| mergePaths | склеивание нескольких Path в одну кривую | включен |
| convertShapeToPath | конвертирование простых форм в Path | включен |
| convertEllipseToCircle | конвертирование вырожденного эллипса <ellipse> в круг <circle> | включен |
| sortAttrs | сортировка атрибутов элементов для удобочитаемости | выключено |
| sortDefsChildren | сортировка детей <defs> для лучшей компрессии | включен |
| removeDimensions | удаляет атрибуты width/height при наличии viewBox (противоречит removeViewBox — плагин должен быть выключен) | выключено |
| removeAttrs | удаляет атрибуты по указанному паттерну | выключено |
| removeAttributesBySelector | удаляет атрибуты по CSS-селектору | выключено |
| removeElementsByAttr | удаляет элементы по указанным ID или классам | выключено |
| addClassesToSVGElement | добавляет имена классов корневому элементу <svg> | выключено |
| addAttributesToSVGElement | добавляет атрибуты корневому элементу <svg> | выключено |
| removeOffCanvasPaths | удаляет элементы вне отрисовываемой области | выключено |
| removeStyleElement | удаляет элементы <style> | выключено |
| removeScriptElement | удаляет элементы <script> | выключено |
| reusePaths | Заменяет дублирующиеся элементы <path> ссылками <use> | выключено |
Хотите узнать принципы работы и как написать свой плагин? Конечно же, да!
с файлами:
```sh $ svgo test.svg ```
или:
```sh $ svgo *.svg ```
```sh $ svgo test.svg -o test.min.svg ```
```sh $ svgo test.svg other.svg third.svg ```
```sh $ svgo test.svg other.svg third.svg -o test.min.svg -o other.min.svg -o third.min.svg ```
со STDIN / STDOUT:
```sh $ cat test.svg | svgo -i - -o - > test.min.svg ```
с папками
```sh $ svgo -f ../path/to/folder/with/svg/files ```
или:
```sh $ svgo -f ../path/to/folder/with/svg/files -o ../path/to/folder/with/svg/output ```
```sh $ svgo *.svg -o ../path/to/folder/with/svg/output ```
со строками:
``‘sh $ svgo -s ’<svg version="1.1">test</svg>' -o test.min.svg ```
или даже с Data URI base64:
``‘sh $ svgo -s 'data:image/svg+xml;base64,…’ -o test.min.svg ```
с SVGZ:
из .svgz в .svg:
```sh $ gunzip -c test.svgz | svgo -i - -o test.min.svg ```
из .svg в .svgz:
```sh $ svgo test.svg -o - | gzip -cfq9 > test.svgz ```
Данное программное обеспечение выпускается под лицензией MIT.
Логотип – Егор Большаков.