天天看點

SVGO--使用/執行個體

簡介

說明

        本文介紹svg圖檔的壓縮工具:svgo。

        我們很多網上下載下傳或者Sketch導出的svg會有很多備援無用的資訊,大大的增加了svg的尺寸,可以使用svgo對它進行優化。無用的資訊有:編輯器源資訊,注釋等。

官網網址

github位址:​​https://github.com/svg/svgo​​

線上壓縮

​​在幾秒鐘内免費壓縮你的SVG檔案! ​​//可壓縮多檔案,導出檔案名不變

​​SVG壓縮器-壓縮SVG線上​​                 //可壓縮多檔案,導出檔案名加-min

​​SVG壓縮 – 線上壓縮SVG圖像​​           //可壓縮多檔案,導出檔案名加-min

svgo概述

        svgo是SVG Optimizer的簡寫。這是一個基于Nodejs的SVG檔案優化工具。

SVGO基于插件模式建構,基本上所有的優化都是一個分離的插件。

目前有:

  • [​​cleanupAttrs​​ ] 清除換行,結束符以及重複空格
  • [​​removeDoctype​​ ] 删除文檔聲明
  • [​​removeXMLProcInst​​ ] 删除XML處理指令
  • [​​removeComments​​ ] 删除注釋
  • [​​removeMetadata​​ ] 删除<metadata>源資訊
  • [​​removeTitle​​ ] 删除<title>标題(預設禁用)
  • [​​removeDesc​​ ] 删除<desc>描述 (預設隻有desc元素無意義的時候)
  • [​​removeUselessDefs​​ ] 删除<defs>元素如果沒有id
  • [​​removeEditorsNSData​​ ] 删除編輯器的命名空間,元素和屬性
  • [​​removeEmptyAttrs​​ ] 删除空屬性
  • [​​removeHiddenElems​​ ] 删除隐藏元素
  • [​​removeEmptyText​​ ] 删除隐藏文本元素
  • [​​removeEmptyContainers​​ ] 删除空的容器元素
  • [​​removeViewBox​​ ]如果可以,删除viewBox屬性(預設進行)
  • [​​cleanUpEnableBackground​​ ] 如果可以,删除enable-background屬性
  • [​​minifyStyles​​​ ] 使用​​CSSO​​最小化元素的<style>内容
  • [​​convertStyleToAttrs​​ ] 轉換樣式為屬性值
  • [​​convertColors​​ ] 轉換顔色(從rgb()到#rrggbb, 從 #rrggbb到#rgb)
  • [​​convertPathData​​ ] 将路徑資料轉換為的相對路徑和絕對路徑中簡短的那一個,過濾無用的分隔符,智能四舍五入以及其他很多處理
  • [​​convertTransform​​ ] 合并多個transforms為一個, 轉換矩陣為短命名,以及其他很多處理
  • [​​removeUnknownsAndDefaults​​ ] 删除未知的元素内容和屬性,删除值為預設值的屬性/li>
  • [​​removeNonInheritableGroupAttrs​​ ] 删除不可基礎組的”presentation”屬性
  • [​​removeUselessStrokeAndFill​​ ] 删除無用的stroke和fill屬性
  • [​​removeUnusedNS​​ ] 删除沒有使用的命名空間聲明
  • [​​cleanupIDs​​ ] 删除沒有使用或者壓縮使用的IDs
  • [​​cleanupNumericValues​​ ] 數值四舍五入提高精度, 删除預設的’px’機關
  • [​​moveElemsAttrsToGroup​​ ] 移動元素屬性們到外面包裹的組元素上
  • [​​moveGroupAttrsToElems​​ ] 移動一些組屬性到内容元素上
  • [​​collapseGroups​​ ] 合并無用的組
  • [​​removeRasterImages​​ ] 删除點陣圖像(預設禁用)
  • [​​mergePaths​​ ] 合并多個路徑為一個
  • [​​convertShapeToPath​​ ] 轉換一些基本圖形為路徑
  • [​​sortAttrs​​ ] 元素屬性排序使其像詩歌一樣易讀(預設禁用)
  • [​​transformsWithOnePath​​ ] 通過裡面一條路徑實作transforms, 真實寬度剪裁, 垂直居中對齊以及SVG縮放拉伸(預設禁用)
  • [​​removeDimensions​​ ] 如果viewBox就是當下尺寸限定,删除width/height屬性(預設禁用)
  • [​​removeAttrs​​ ] 通過正則删除屬性 (預設禁用)
  • [​​addClassesToSVGElement​​ ] 添加類名給外面的<svg>元素 (預設禁用)
  • [​​removeStyleElement​​ ] 删除元素的<style> (預設禁用)

使用

安裝

npm install -g svgo      

選項

svgo [OPTIONS] [ARGS]

Options:
  -h, --help : Help 幫助
  -v, --version : Version版本
  -i INPUT, --input=INPUT : 輸入的檔案, "-" 為标準輸入
  -s STRING, --string=STRING : 輸入SVG資料字元串
  -f FOLDER, --folder=FOLDER : 輸入的檔案夾,會優化與重寫所有的*.svg檔案
  -o OUTPUT, --output=OUTPUT : 輸入的檔案或檔案夾 (預設同輸入), "-" 标準輸出
  -p PRECISION, --precision=PRECISION : 設定數字的小數部分,重寫插件參數
  --config=CONFIG : 配置檔案擴充或替換預設設定
  --disable=DISABLE : 根據名字禁用插件
  --enable=ENABLE : 根據名字開啟插件
  --datauri=DATAURI : 輸入檔案以Data URI字元串形式(base64, URI encoded or unencoded)
  -q, --quiet : 僅輸出錯誤資訊,不包括正常狀态消息
  --pretty : 讓SVG漂亮的列印
  --show-plugins : 顯示可用和存在的插件

Arguments:
  INPUT : 别名 --input
  OUTPUT : 别名 --output      

示例

檔案夾舉例

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

或者:

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

單個檔案使用舉例

svgo test.svg      

或者:

svgo test.svg test.min.svg      

使用STDIN / STDOUT(标準輸入輸出)

cat test.svg | svgo -i - -o - > test.min.svg      

使用字元串

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      

vue-element-admin對svgo的使用

        我是在看vue-element-admin時看到的svgo,于是寫了這篇部落格。本處介紹vue-element-admin對svgo的使用。

1. 在開發依賴中引入svgo

SVGO--使用/執行個體

2. svgo配置檔案以及svg圖檔檔案夾

SVGO--使用/執行個體

svg檔案夾:存放svg圖示檔案

svgo.yml:配置檔案。内容為:

# replace default config

# multipass: true
# full: true

plugins:

  # - name
  #
  # or:
  # - name: false
  # - name: true
  #
  # or:
  # - name:
  #     param1: 1
  #     param2: 2

- removeAttrs:
    attrs:
      - 'fill'
      - 'fill-rule'      

3. 将svgo添加到腳本

SVGO--使用/執行個體

腳本為:

svgo -f src/icons/svg --config=src/icons/svgo.yml      

其他網址