> For the complete documentation index, see [llms.txt](https://bryan-guner.gitbook.io/my-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bryan-guner.gitbook.io/my-docs/redux/repos/examples/real-world/node_modules/svgo/readme.ru.md).

# README.ru

[english](https://github.com/svg/svgo/blob/master/README.md) | **русский**

***

![logo](https://svg.github.io/svgo-logo.svg)

### SVGO [![NPM version](https://badge.fury.io/js/svgo.svg)](https://npmjs.org/package/svgo) [![Build Status](https://secure.travis-ci.org/svg/svgo.svg)](https://travis-ci.org/svg/svgo) [![Coverage Status](https://img.shields.io/coveralls/svg/svgo.svg)](https://coveralls.io/r/svg/svgo?branch=master)

**SVG** **O**ptimizer – это инструмент для оптимизации векторной графики в формате SVG, написанный на Node.js. ![](https://mc.yandex.ru/watch/18431326)

### Зачем?

SVG-файлы, особенно экспортированные из редакторов, содержат много избыточной и бесполезной информации, комментариев, скрытых элементов, неоптимальные или стандартные значения и другой мусор, удаление которого безопасно и не влияет на конечный вид изображения.

### Возможности

SVGO имеет расширяемую архитектуру, в которой почти каждая оптимизация является отдельным расширением.

Что у нас есть:

| Plugin                                                                                                              | Description                                                                                                                                                                                                  | Default     |
| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- |
| [cleanupAttrs](https://github.com/svg/svgo/blob/master/plugins/cleanupAttrs.js)                                     | удаление переносов строк и лишних пробелов                                                                                                                                                                   | `включен`   |
| [inlineStyles](https://github.com/svg/svgo/blob/master/plugins/inlineStyles.js)                                     | перенос стилей из элементов `<style>` в атрибуты `style`                                                                                                                                                     | `включен`   |
| [removeDoctype](https://github.com/svg/svgo/blob/master/plugins/removeDoctype.js)                                   | удаление doctype                                                                                                                                                                                             | `включен`   |
| [removeXMLProcInst](https://github.com/svg/svgo/blob/master/plugins/removeXMLProcInst.js)                           | удаление XML-инструкций                                                                                                                                                                                      | `включен`   |
| [removeComments](https://github.com/svg/svgo/blob/master/plugins/removeComments.js)                                 | удаление комментариев                                                                                                                                                                                        | `включен`   |
| [removeMetadata](https://github.com/svg/svgo/blob/master/plugins/removeMetadata.js)                                 | удаление `<metadata>`                                                                                                                                                                                        | `включен`   |
| [removeTitle](https://github.com/svg/svgo/blob/master/plugins/removeTitle.js)                                       | удаление `<title>`                                                                                                                                                                                           | `включен`   |
| [removeDesc](https://github.com/svg/svgo/blob/master/plugins/removeDesc.js)                                         | удаление `<desc>`                                                                                                                                                                                            | `включен`   |
| [removeUselessDefs](https://github.com/svg/svgo/blob/master/plugins/removeUselessDefs.js)                           | удаление элементов в `<defs>` без `id`                                                                                                                                                                       | `включен`   |
| [removeXMLNS](https://github.com/svg/svgo/blob/master/plugins/removeXMLNS.js)                                       | удаление атрибута xmlns (для заинлайненных svg)                                                                                                                                                              | `выключено` |
| [removeEditorsNSData](https://github.com/svg/svgo/blob/master/plugins/removeEditorsNSData.js)                       | удаление пространств имён различных редакторов, их элементов и атрибутов                                                                                                                                     | `включен`   |
| [removeEmptyAttrs](https://github.com/svg/svgo/blob/master/plugins/removeEmptyAttrs.js)                             | удаление пустых атрибутов                                                                                                                                                                                    | `включен`   |
| [removeHiddenElems](https://github.com/svg/svgo/blob/master/plugins/removeHiddenElems.js)                           | удаление скрытых элементов                                                                                                                                                                                   | `включен`   |
| [removeEmptyText](https://github.com/svg/svgo/blob/master/plugins/removeEmptyText.js)                               | удаление пустых текстовых элементов                                                                                                                                                                          | `включен`   |
| [removeEmptyContainers](https://github.com/svg/svgo/blob/master/plugins/removeEmptyContainers.js)                   | удаление пустых элементов-контейнеров                                                                                                                                                                        | `включен`   |
| [removeViewBox](https://github.com/svg/svgo/blob/master/plugins/removeViewBox.js)                                   | удаление атрибута `viewBox`, когда это возможно                                                                                                                                                              | `включен`   |
| [cleanupEnableBackground](https://github.com/svg/svgo/blob/master/plugins/cleanupEnableBackground.js)               | удаление или оптимизация атрибута `enable-background`, когда это возможно                                                                                                                                    | `включен`   |
| [minifyStyles](https://github.com/svg/svgo/blob/master/plugins/minifyStyles.js)                                     | уменьшает содержимое элементов `<style>` с помощью [CSSO](https://github.com/css/csso).                                                                                                                      | `включен`   |
| [convertStyleToAttrs](https://github.com/svg/svgo/blob/master/plugins/convertStyleToAttrs.js)                       | конвертирование стилей в атрибуте `style` в отдельные svg-атрибуты                                                                                                                                           | `включен`   |
| [convertColors](https://github.com/svg/svgo/blob/master/plugins/convertColors.js)                                   | конвертирование цветовых значений: из `rgb()` в `#rrggbb`, из `#rrggbb` в `#rgb`                                                                                                                             | `включен`   |
| [convertPathData](https://github.com/svg/svgo/blob/master/plugins/convertPathData.js)                               | конвертирование данных Path в относительные или абсолютные координаты, смотря что \|короче; конвертирование одних типов сегментов в другие; удаление ненужных разделителей; умное округление и тому подобное | `включен`   |
| [convertTransform](https://github.com/svg/svgo/blob/master/plugins/convertTransform.js)                             | схлопывание нескольких трансформаций в одну, конвертирование матриц в короткие алиасы \|и многое другое                                                                                                      | `включен`   |
| [removeUnknownsAndDefaults](https://github.com/svg/svgo/blob/master/plugins/removeUnknownsAndDefaults.js)           | удаление неизвестных элементов, контента и атрибутов                                                                                                                                                         | `включен`   |
| [removeNonInheritableGroupAttrs](https://github.com/svg/svgo/blob/master/plugins/removeNonInheritableGroupAttrs.js) | удаление ненаследуемых "презентационных" атрибутов групп                                                                                                                                                     | `включен`   |
| [removeUselessStrokeAndFill](https://github.com/svg/svgo/blob/master/plugins/removeUselessStrokeAndFill.js)         | удаление неиспользуемых атрибутов stroke-\* и fill-\*                                                                                                                                                        | `включен`   |
| [removeUnusedNS](https://github.com/svg/svgo/blob/master/plugins/removeUnusedNS.js)                                 | удаление деклараций неиспользуемых пространств имён                                                                                                                                                          | `включен`   |
| [prefixIds](https://github.com/svg/svgo/blob/master/plugins/prefixIds.js)                                           | добавляет префикс в ID или классы в виде имени файла или произвольной строки                                                                                                                                 | `выключено` |
| [cleanupIDs](https://github.com/svg/svgo/blob/master/plugins/cleanupIDs.js)                                         | удаление неиспользуемых и сокращение используемых ID                                                                                                                                                         | `включен`   |
| [cleanupNumericValues](https://github.com/svg/svgo/blob/master/plugins/cleanupNumericValues.js)                     | округление дробных чисел до заданной точности, удаление `px` как единицы \|измерения по-умолчанию                                                                                                            | `включен`   |
| [cleanupListOfValues](https://github.com/svg/svgo/blob/master/plugins/cleanupListOfValues.js)                       | округление числовых значений в атрибутах со списком чисел, таких как `viewBox` \|или `enableBackground`                                                                                                      | `выключено` |
| [moveElemsAttrsToGroup](https://github.com/svg/svgo/blob/master/plugins/moveElemsAttrsToGroup.js)                   | перемещение совпадающих атрибутов у всех элементов внутри группы `<g>`                                                                                                                                       | `включен`   |
| [moveGroupAttrsToElems](https://github.com/svg/svgo/blob/master/plugins/moveGroupAttrsToElems.js)                   | перемещение некоторых атрибутов группы на элементы внутри                                                                                                                                                    | `включен`   |
| [collapseGroups](https://github.com/svg/svgo/blob/master/plugins/collapseGroups.js)                                 | схлопывание бесполезных групп `<g>`                                                                                                                                                                          | `включен`   |
| [removeRasterImages](https://github.com/svg/svgo/blob/master/plugins/removeRasterImages.js)                         | удаление растровых изображений                                                                                                                                                                               | `выключено` |
| [mergePaths](https://github.com/svg/svgo/blob/master/plugins/mergePaths.js)                                         | склеивание нескольких Path в одну кривую                                                                                                                                                                     | `включен`   |
| [convertShapeToPath](https://github.com/svg/svgo/blob/master/plugins/convertShapeToPath.js)                         | конвертирование простых форм в Path                                                                                                                                                                          | `включен`   |
| [convertEllipseToCircle](https://github.com/svg/svgo/blob/master/plugins/convertEllipseToCircle.js)                 | конвертирование вырожденного эллипса `<ellipse>` в круг `<circle>`                                                                                                                                           | `включен`   |
| [sortAttrs](https://github.com/svg/svgo/blob/master/plugins/sortAttrs.js)                                           | сортировка атрибутов элементов для удобочитаемости                                                                                                                                                           | `выключено` |
| [sortDefsChildren](https://github.com/svg/svgo/blob/master/plugins/sortDefsChildren.js)                             | сортировка детей `<defs>` для лучшей компрессии                                                                                                                                                              | `включен`   |
| [removeDimensions](https://github.com/svg/svgo/blob/master/plugins/removeDimensions.js)                             | удаляет атрибуты width/height при наличии viewBox (противоречит removeViewBox — плагин должен быть выключен)                                                                                                 | `выключено` |
| [removeAttrs](https://github.com/svg/svgo/blob/master/plugins/removeAttrs.js)                                       | удаляет атрибуты по указанному паттерну                                                                                                                                                                      | `выключено` |
| [removeAttributesBySelector](https://github.com/svg/svgo/blob/master/plugins/removeAttributesBySelector.js)         | удаляет атрибуты по CSS-селектору                                                                                                                                                                            | `выключено` |
| [removeElementsByAttr](https://github.com/svg/svgo/blob/master/plugins/removeElementsByAttr.js)                     | удаляет элементы по указанным ID или классам                                                                                                                                                                 | `выключено` |
| [addClassesToSVGElement](https://github.com/svg/svgo/blob/master/plugins/addClassesToSVGElement.js)                 | добавляет имена классов корневому элементу `<svg>`                                                                                                                                                           | `выключено` |
| [addAttributesToSVGElement](https://github.com/svg/svgo/blob/master/plugins/addAttributesToSVGElement.js)           | добавляет атрибуты корневому элементу `<svg>`                                                                                                                                                                | `выключено` |
| [removeOffCanvasPaths](https://github.com/svg/svgo/blob/master/plugins/removeOffCanvasPaths.js)                     | удаляет элементы вне отрисовываемой области                                                                                                                                                                  | `выключено` |
| [removeStyleElement](https://github.com/svg/svgo/blob/master/plugins/removeStyleElement.js)                         | удаляет элементы `<style>`                                                                                                                                                                                   | `выключено` |
| [removeScriptElement](https://github.com/svg/svgo/blob/master/plugins/removeScriptElement.js)                       | удаляет элементы `<script>`                                                                                                                                                                                  | `выключено` |
| [reusePaths](https://github.com/svg/svgo/blob/master/plugins/reusePaths.js)                                         | Заменяет дублирующиеся элементы ссылками                                                                                                                                                                     | `выключено` |

Хотите узнать принципы работы и как написать свой плагин? [Конечно же, да!](https://github.com/svg/svgo/blob/master/docs/how-it-works/ru.md)

### Как использовать

```
$ [sudo] npm install -g svgo
```

### Выполнение:

#### Командная строка

```
Запуск:
  svgo [OPTIONS] [ARGS]

Параметры:
  -h, --help : Помощь
  -v, --version : Версия программы
  -i INPUT, --input=INPUT : Входной файл, "-" для STDIN
  -s STRING, --string=STRING : Входная строка SVG
  -f FOLDER, --folder=FOLDER : Входная папка, оптимизирует и перезаписывает все файлы *.svg
  -o OUTPUT, --output=OUTPUT : Выходной файл или папка (совпадает с входным по умолчанию), "-" для STDOUT
  -p PRECISION, --precision=PRECISION : Число цифр после запятой, переопределяет параметры плагинов
  --config=CONFIG : Файл конфигурации (или строка JSON) для расширения и замены настроек
  --disable=PLUGIN : Выключение плагина по имени, "--disable=PLUGIN1,PLUGIN2" для отключения нескольких плагинов
  --enable=PLUGIN : Включение плагина по имени, "--enable=PLUGIN3,PLUGIN4" для отключения нескольких плагинов
  --datauri=DATAURI : Результат в виде строки Data URI (base64, URI encoded или unencoded)
  --multipass : Оптимизация в несколько проходов для применения всех возможных оптимизаций
  --pretty : Удобочитаемое форматирование SVG
  --indent=INDENT : Размер отступа для удобочитаемого форматирования
  -r, --recursive : Совместно с '-f'. Рекурсивно обрабатывать *.svg файлы в папках.
  -q, --quiet : Подавляет вывод информации, выводятся только сообщения об ошибках
  --show-plugins : Доступные плагины

Аргументы:
  INPUT : Аналогично --input
```

* с файлами:

  ```
  $ svgo test.svg
  ```

  или:

  ```
  $ 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
  ```
* со STDIN / STDOUT:

  ```
  $ cat test.svg | svgo -i - -o - > test.min.svg
  ```
* с папками

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

  или:

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

  ```
  $ svgo *.svg -o ../path/to/folder/with/svg/output
  ```
* со строками:

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

  или даже с Data URI base64:

  ```
  $ svgo -s 'data:image/svg+xml;base64,…' -o test.min.svg
  ```
* с SVGZ:

  из `.svgz` в `.svg`:

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

  из `.svg` в `.svgz`:

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

#### Другие способы использования SVGO

* в виде веб-приложения - [SVGOMG](https://jakearchibald.github.io/svgomg/)
* как модуль Node.js – [examples](https://github.com/svg/svgo/tree/master/examples)
* как таск для Grunt – [grunt-svgmin](https://github.com/sindresorhus/grunt-svgmin)
* как таск для Gulp – [gulp-svgmin](https://github.com/ben-eb/gulp-svgmin)
* как таск для Mimosa – [mimosa-minify-svg](https://github.com/dbashford/mimosa-minify-svg)
* как действие папки в OSX – [svgo-osx-folder-action](https://github.com/svg/svgo-osx-folder-action)
* через загрузчик webpack – [image-webpack-loader](https://github.com/tcoopman/image-webpack-loader)
* с помощью бота в Telegram – [svgo\_bot](https://github.com/maksugr/svgo_bot)
* как плагин PostCSS - [postcss-svgo](https://github.com/ben-eb/postcss-svgo)
* как плагин для Inkscape – [inkscape-svgo](https://github.com/konsumer/inkscape-svgo)
* как плагин для Sketch - [svgo-compressor](https://github.com/BohemianCoding/svgo-compressor)
* в виде приложения macOS - [Image Shrinker](https://image-shrinker.com)
* как плагин для Rollup - [rollup-plugin-svgo](https://github.com/porsager/rollup-plugin-svgo)

### Лицензия и копирайты

Данное программное обеспечение выпускается под [лицензией MIT](https://github.com/svg/svgo/blob/master/LICENSE).

Логотип – [Егор Большаков](http://xizzzy.ru/).
