svgo-icon
Nodejs-based tool for optimizing SVG vector graphics files
Last updated 4 years ago by pingfanren .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install svgo-icon 
SYNC missed versions from official npm registry.

english


logo

SVGO NPM version Dependency Status Build Status Coverage Status

SVG Optimizer is a Nodejs-based tool for optimizing SVG vector graphics files.

Why?

SVG files, especially exported from various editors, usually contain a lot of redundant and useless information such as editor metadata, comments, hidden elements, default or non-optimal values and other stuff that can be safely removed or converted without affecting SVG rendering result.

What it can do

SVGO has a plugin-based architecture, so almost every optimization is a separate plugin.

Today we have:

Want to know how it works and how to write your own plugin? Of course you want to. (동작방법)

How to use

$ [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 or folder (by default the same as the input), "-" for STDOUT
  -p PRECISION, --precision=PRECISION : Set number of digits in the fractional part, overrides plugins params
  --config=CONFIG : Config file to extend or replace default
  --disable=DISABLE : Disable plugin by name
  --enable=ENABLE : Enable plugin by name
  --datauri=DATAURI : Output as Data URI string (base64, URI encoded or unencoded)
  -q, --quiet : Only output error messages, not regular status messages
  --pretty : Make SVG pretty printed
  --show-plugins : Show available plugins and exit
  --multipass : Enable multipass
  --indent=INDENT : Indent number when pretty printing SVGs

Arguments:
  INPUT : Alias to --input
  OUTPUT : Alias to --output
  • with files:

      $ svgo test.svg
    

    or:

      $ svgo test.svg test.min.svg
    
  • with STDIN / STDOUT:

      $ cat test.svg | svgo -i - -o - > test.min.svg
    
  • with folder

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

    or:

      $ svgo -f ../path/to/folder/with/svg/files -o ../path/to/folder/with/svg/output
    
  • with strings:

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

    or even with Data URI base64:

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

    from .svgz to .svg:

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

    from .svg to .svgz:

      $ svgo test.svg -o - | gzip -cfq9 > test.svgz
    
  • with GUI – svgo-gui

  • as a web app - SVGOMG

  • as a Nodejs module – examples

  • as a Grunt task – grunt-svgmin

  • as a Gulp task – gulp-svgmin

  • as a Mimosa module – mimosa-minify-svg

  • as an OSX Folder Action – svgo-osx-folder-action

  • as a webpack loader – image-webpack-loader

  • as a Telegram Bot – svgo_bot

  • as a PostCSS plugin - postcss-svgo

todo cli

'use strict';

var fs = require('fs'),
    PATH = require('path'),
    SVGO = require('svgo');


var  svgo = new SVGO({
        full    : true,   //full为false, 则plugins插件中active为true默认开启,反之则用自定义
        plugins : [ 
            {moveElemsAttrsToGroup: true},
            "minifyStyles",
            { "removeHiddenElems" : true  }, 
            { "removeUselessStrokeAndFill" : false  }, 
            { "convertShapeToPath" : true  }, 
            { "convertStyleToAttrs" : true  },  //style样式转换到标签属性上
            { "mergePaths" : true  },
            { "removeAttrs" : {attrs: ["id", "class"]}}, 
            {"moveGroupAttrsToElems": true},   
            {"collapseGroups": true},   
            "convertPathData", 
            {"removeDimensions": true},
            {"transformsWithOnePath": false} 
        ],
        js2svg  : { pretty: true }
    });    


FS.readFile("./test.svg", 'utf8', function(err, data) {

})

var data = fs.readFileSync("./test.svg", 'utf8');


svgo.optimize(data, function(result) {
  fs.writeFileSync("./output/test.min.svg",result.data,'utf8');
}

Reference data:

SVG 基本形状与路径

svgPathify 基本形状转换path路径

fontello提供的 tansform转换

License and copyrights

This software is released under the terms of the MIT license.

Logo by Yegor Bolshakov.

Current Tags

  • 0.1.0                                ...           latest (4 years ago)

1 Versions

  • 0.1.0                                ...           4 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (7)
Dev Dependencies (5)
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |