english | русский
SVG Optimizer – это инструмент для оптимизации векторной графики в формате SVG, написанный на Node.js.
SVG-файлы, особенно – экспортированные из различных редакторов, содержат много избыточной и бесполезной информации, комментариев, скрытых элементов, неоптимальные или стандартные значения и другой мусор, удаление которого безопасно и не влияет на конечный результат отрисовки.
SVGO имеет расширяемую архитектуру, в которой почти каждая оптимизация является отдельным расширением.
Сегодня у нас есть:
- [ > ] удаление переносов строк и лишних пробелов
- [ > ] удаление doctype
- [ > ] удаление XML-инструкций
- [ > ] удаление комментариев
- [ > ] удаление
<metadata>
- [ > ] удаление пространств имён различных редакторов, их элементов и атрибутов
- [ > ] удаление пустых атрибутов
- [ > ] удаление скрытых элементов
- [ > ] удаление пустых текстовых элементов
- [ > ] удаление пустых элементов-контейнеров
- [ > ] удаление атрибута
viewBox
, когда это возможно - [ > ] удаление или оптимизация атрибута
enable-background
, когда это возможно - [ > ] конвертирование стилей в атрибуте
style
в отдельные svg-атрибуты - [ > ] конвертирование цветовых значений: из
rgb()
в#rrggbb
, из#rrggbb
в#rgb
- [ > ] конвертирование данных Path в относительные координаты, конвертирование одних типов сегментов в другие, удаление ненужных разделителей и тому подобное
- [ > ] схлопывание нескольких трансформаций в одну, конвертирование матриц в короткие алиасы и многое другое
- [ > ] удаление неизвестных элементов, контента и атрибутов
- [ > ] удаление деклараций неиспользуемых пространств имён
- [ > ] удаление неиспользуемых и сокращение используемых ID
- [ > ] округление дробных чисел до заданной точности, удаление
px
как единицы измерения по-умолчанию - [ > ] перемещение совпадающих атрибутов у всех элементов внутри группы
<g>
- [ > ] перемещение некоторых атрибутов группы на элементы внутри
- [ > ] схлопывание бесполезных групп
<g>
Хотите узнать, как это работает и как написать свой плагин? Конечно же, да!.
$ [sudo] npm install -g svgo
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 (by default the same as the input), "-" for STDOUT
-c CONFIG, --config=CONFIG : Local config file to extend default
--disable=DISABLE : Disable plugin by name
--enable=ENABLE : Enable plugin by name
--datauri : Output as Data URI base64 string
--pretty : Make SVG pretty printed
Arguments:
INPUT : Alias to --input
OUTPUT : Alias to --output
-
с файлами:
$ svgo test.svg
или:
$ svgo test.svg test.min.svg
-
с STDIN / STDOUT:
$ cat test.svg | svgo -i - -o - > test.min.svg
-
с папками
$ svgo -f ../path/to/folder/with/svg/files
-
со строками:
$ 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
-
с помощью GUI – svgo-gui
-
как модуль Node.js – examples
-
как таск для Grunt – svgo-grunt
-
как действие папки в OSX – svgo-osx-folder-action
Данное программное обеспечение выпускается под лицензией MIT.
Логотип – Егор Большаков.