Code Monkey home page Code Monkey logo

svgo-compressor's Introduction

SVGO Compressor

A Plugin that compresses SVG assets using SVGO, right when you export them.

Install

  • Download SVGO Compressor & unzip it.
  • Double click SVGO Compressor.sketchplugin to install the Plugin.

Usage

Selecting menu items or hitting keys is out of fashion. SVGO Compressor will compress your SVG assets whenever you export them, without you having to do anything.

You’ll get a message on your document window to let you know the compression worked as expected.

If you need uncompressed SVG assets, you can temporarily disable the Plugin by opening Sketch’s Preferences › Plugins and unchecking 'SVGO Compressor'. Or you can right-click any layer and select Copy SVG Code, and that will give you the original, uncompressed code.

Custom SVGO configuration

SVGO Compressor uses a default configuration that does a reasonable job of compressing SVG code, while maintaining compatibility and avoiding rendering issues. If you need to change the defaults, you can do so by creating an svgo.config.js file in Sketch's Plugins directory (located by default in ~/Library/Application\ Support/com.bohemiancoding.sketch3/Plugins/).

For a complete reference of what your SVGO config should look like, see SVGO’s configuration documentation.

Any option that is not set on your custom configuration will use the defaults set by SVGO Compressor. For example, here's how a sample configuration to output unminified code could look like:

module.exports = {
  js2svg: {
    indent: 2,
    pretty: true,
  }
}

Keep in mind that our defaults do not match the ones in SVGO 100%. If you use the preset-default option in SVGO your results may vary from the ones this plugin exports. For the record, here's the default configuration we use:

{
  path: currentFile, // This is the path to the currently exported SVG asset
  multipass: true,
  plugins: [
    {
      name: 'preset-default',
      params: {
        overrides: {
          inlineStyles: false,
          convertStyleToAttrs: true,
          cleanupListOfValues: true,
          removeViewBox: false,
          cleanupEnableBackground: false,
          removeHiddenElems: false,
          convertShapeToPath: false,
          moveElemsAttrsToGroup: false,
          moveGroupAttrsToElems: false,
          convertPathData: false,
          sortAttrs: true,
        }
      }
    }
  ],
}

Again, for more information about custom configurations please refer to SVGO's own documentation. Please note that the custom plugins feature is untested in SVGO Compressor, so it may or may not work.

Acknowledgements

We would like to thank:

Development

This plugin is built using skpm. To build it, just run

npm i
npm run build

To edit the Plugin's code, edit the code in src and run npm run build. You can also run npm run watch to automatically rebuild the Plugin every time you make changes in the code.

svgo-compressor's People

Contributors

bomberstudios avatar dependabot[bot] avatar hypd avatar jamesbream avatar kate-hall avatar mathieudutour avatar trysound avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

svgo-compressor's Issues

Feature Request: Option of using SVGO when exporting SVG's

Very useful plugin. Thanks.

I know you can reasonably easily turn a plugin on and off, but I would find it useful to have an "SVG (SVGO)" option in the export menu. That way you could pick "SVG" for "normal" exports, and "SVG (SVGO)" for compressed exports. Just a suggestion.

Update SVGO 1.1.1 -> 1.2.0

👋 Could you please update the plugin to support SVGO 1.2.0? There are a few improvements in 1.2.0 that could be valuable to some of the work I'm doing.

Remove Elements?

Hi,
Is there a way to remove any elements in the svg file.
For example i have a masking layer that i'm using on Sketch. But i don't need it on the exported svg file. I want to remove <rect> element while exporting from Sketch.

cleanupListOfValues doesn't work for paths

For some reason paths are not affected by this plugin, which probably is the cause of the majority of bloat.

Would it be possible to enable this for paths as well?

Expected:

<path id="Fill-261" d="M6.491,19.098 C6.641,19.155

Actual:

<path id="Fill-261" d="M6.49140449,19.0979179 C6.6411236,19.1553959

I know this interferes with some precision, but that should be up to the user's config.

Adding attributes and classes to SVG (I have a solution!)

In your README you note that addAttributesToSVGElement and addClassesToSVGElement don't do anything, apparently. I had a need for additional attributes, so I chased down the answer. With no modifications to your (wonderful) plugin, here's the JSON config that makes both of these plugins work as expected:

Single attribute

{
    "name": "addAttributesToSVGElement",
    "params": {
        "attribute": {
            "width": "100%"
        }
    }
}

Multiple attributes

{
    "name": "addAttributesToSVGElement",
    "params": {
        "attributes": [
            { "width": "100%" },
            { "height": "100%" }
        ]
    }
}

One class

{
    "name": "addClassesToSVGElement",
    "params": {
        "className": "test"
    }
}

Multiple classes

{
    "name": "addClassesToSVGElement",
    "params": {
        "classNames": [
            "test",
            "another-test"
        ]
    }
}

Hope this helps with updating your README, I'm sure other uses would appreciate it!

Feature request: remove useless masks

Description

given an svg file:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="60" height="60" viewBox="0 0 60 60">
  <defs>
    <path id="a-to-z-a" d="M20.588,26 L19.1,22.424 L11.9,22.424 L10.412,26 L7.892,26 L15.308,8.96 L15.644,8.96 L23.084,26 L20.588,26 Z M12.812,20.216 L18.188,20.216 L15.5,13.736 L12.812,20.216 Z M47.744,34.2 L47.744,34.488 L40.64,48.792 L47.504,48.792 L47.504,51 L37.256,51 L37.256,50.664 L44.408,36.408 L37.352,36.408 L37.352,34.2 L47.744,34.2 Z M27,18.2532924 C27,18.1134029 27.1139402,18 27.2557783,18 L29.7442217,18 C29.8854841,18 30,18.1070023 30,18.2532924 L30,41.7467076 C30,41.8865971 29.8860598,42 29.7442217,42 L27.2557783,42 C27.1145159,42 27,41.8929977 27,41.7467076 L27,18.2532924 Z"/>
  </defs>
  <g fill="none" fill-rule="evenodd">
    <mask id="a-to-z-b" fill="#fff">
      <use xlink:href="#a-to-z-a"/>
    </mask>
  </g>
</svg>

I'd like to remove the useless mask that sketch produces from the artboard/symbol and instead of the use xlink:href="#a-to-z" it should inline the path and remove defs.

Context

Chrome doesn't render masks correctly.

Exported SVG appears white, does not compare to SVGO command line

Hey guys,
I was so happy when I heard this plugin exists, unfortunately, designers complained it didn't work.

  • Disclaimer - we use the --disable=removeUselessStrokeAndFill option for the command line, I followed the instructions and removed the same plugin from svgo.json file

I tried to reproduce the problem and this are my findings :

image

fundbox_logo_from_sketch.svg is exported directly from sketch without svgo plugin
fundbox_logo_from_sketch_svgo_plugin.svg is exported using the svgo sketch plugin, and doesn't work (appears white, doesn't show the logo)
fundbox_logo_optimized_command_line.svg - is the first file version, optimized with the svgo command line like so :
svgo /Users/altryne/Downloads/fundbox_logo_optimized_command_line.svg --disable=removeUselessStrokeAndFill

As you can see, the results are not the same, the command line SVGO exports a much smaller file, and it still works. SVGO plugin exports a badly formatted file (I didn't dive in to understand why, beyond a very basic text comparison)

EDIT :
Attaching all three SVG files in a zip
Archive 2.zip

"xmlns" needed, for CSS background

I ran into an issue with removeXMLNS, and using SVG files as a CSS background in Chrome.

I'm not sure why, but after a lot of trial and error, I determined that the absence of…

<svg xmlns="…">

…caused my images to not show up.

Also of note, I'm using background-size in the CSS file. So, perhaps there's some perfect storm of obscurity, where if these two conditions collide, nothing shows up.

Anyway, I figured I'd point that out. Hopefully it'll save others hours of debugging! :)

Way to remove path and fill ids sketch generates?

So sketch adds a ton of nonsense ids to elements on export. I want items stored in groups to maintain the ID they are supplied with but every path is supplied an id as well named the fill number sketch has given it.

Is there a way to over ride this in SVGO's json file without Cleaning all IDs or using
{
"name": "removeAttrs",
"params": {
"attrs": "id"
}
}

Which I also tried and it also strips all ids obviously.

Ideally I am trying to find a way that our designers can export completely clean coded svgs from Sketch that would be viable for Devs not having to manually add custom IDs. But I am starting to think this may not be possible.

Facing issue in extending svgo-compressor

Hey, I wanted to export the compressed SVG as a JSX, I'm able to achieve this functionality through cli using svg-to-jsx, but when I tried to import the svg-to-jsx module in the /src/plugin.js file, the following error is thrown -

screenshot 2018-12-16 at 10 04 20 pm

svg-to-jsx follows commonJs pattern, so import should work just fine but it isn't in the case.

Can you please guide me if I'm doing something wrong?

Fix color space issue in Safari on Gaussian blur

This is a weird issue that I run into from time to time and have just been manually declaring color-interpolation-filters="sRGB" on the feGaussianBlur to fix Safari rendering Gaussian Blurs in linear RGB by default. Rendering in linear RGB instead of sRGB causes the color to render lighter.

It'd be awesome if we could integrate this fix into this plugin, so that design render properly in Safari.

gaussian-example.zip

Call compress(context) function from another plugin

Hi!

Is there any way to call the compress(context) function from another plugin?

Tried with NSApp.delegate().runPluginCommandWithIdentifier_fromBundleAtURL_context('compress', pluginUrl, context);
But that won't work because compress is not a command...

I'm trying to do some SVG preprocessing (or postprocessing) an call SVGO compress method right after. Is it possible?


If I have my new plugin run on Export & ExportSlices actions too, how may I know which will trigger first? Mine, or SVGO? Would it be consistent (always same order)?

Thanks!

Add file prefixing to ID's - in particular paths

Can we add the option to include the file name as a prefix for IDs - in particular paths? A big problem I'm running into when exporting SVGs is the auto labeling of paths as 'path-1', 'path-2' etc. which then conflicts with another SVG if it's on the same webpage.

Version 1.5 not downloading?

I saw that there is a 1.5.0 but it won't download via Sketch. And the versions on Github still point to 1.4.1.

Inline Tags Option

Hi,
Most of the SVGs exported can not be used in android studio, as android studio does not support <defs> & <use>.
Although it's cleaner to use <defs> & <use>, but it makes the SVG useless in this case. It would be nice to have a way to export the SVG without any internal referencing.
Thanks.

Way to prefix defs?

My biggest issue coming from illustrator seems to be the inline defs that don't seem to follow any structure other than #a, #b, #c so when I use the svgs inline they constantly conflict in the DOM, and thus render all the svgs poorly vs the img tag method. And since I'm all about lowering requests I prefer to inline svgs. Something like the folder/artboard name being passed in like #mug-a, #globe-a. would resolve my problem, I could also be exporting svgs wrong? Not a sketch expert.

SVGO precision

Hi, it doesn't look like we can define the precision. Would be cool if we could:

{
  [..]
  "pretty": true,
  "precision": 2,
  "indent": 2,
  [..]
}

Thanks.

Where is the debug output?

Sorry, I'm struggling to see where the debug output appears. I was hoping there might be a way to log output from custom plugins? Or is that an SVGO limitation?

Help adding command to settings

SVGO exported files with masks are not liked by Android Studio.
An alternative to the Adobe Illustrator solution (posted a while back) is to run:
svgo --enable=removeUnknownsAndDefaults file.svg in Terminal to remove masks, that way SVG files can be opened in Android Studio.
Any tips to add this setting into SVGO?
EDIT: Because settings says it's enabled.

floadPrecision not affecting path values

I've set "floatPrecision": 3 globally as well as on cleanupListOfValues and cleanupNumericValues but I still seem to get the output below with <path d values with 7 decimal places.

Example of output

<path d="M16.0071132,25.4435349 C14.5716937,26.2448408 13.6792061,27.7536409 13.5683793,30.035991 C13.5498892,30.416773 13.8438232,30.7404353 14.2248991,30.7589111 C14.6059751,30.7773869 14.9298874,30.4836798 14.9483774,30.1028979 C15.048744,28.0359645 15.8525076,26.9201363 17.152515,26.4311596 C17.8482268,26.1694788 18.6046979,26.1172637 19.2711038,26.1881316 C19.3606758,26.197657 19.4201821,26.2065197 19.4442402,26.2110001 C20.3337661,26.3766578 20.6045203,25.055905 19.7214531,24.8587418 L14.4090206,23.6726307 C11.9225036,22.9922109 11.5472361,22.0725283 12.0076227,20.5390906 C12.2064187,19.8709365 12.6147718,19.5279857 13.2306776,19.3911484 C13.6373189,19.3008039 14.0941226,19.3120377 14.5282841,19.3880614 C14.6538003,19.4100398 14.7420731,19.4309287 14.7811352,19.4421428 L22.8451208,21.3240568 C22.8985237,21.3343305 22.9361525,21.3447578 23.0020154,21.3745802 C23.1354002,21.4349766 23.2742678,21.5320118 23.4097247,21.6766401 C23.9502905,22.2538059 24.2485509,23.3425546 24.09758,25.130866 C23.571614,31.4000463 20.6483005,35.2928359 13.7195863,35.2319711 C13.3380768,35.2286198 13.0260833,35.5349389 13.0227294,35.9161541 C13.0193755,36.2973692 13.3259312,36.609122 13.7074407,36.6124733 C21.4944029,36.6808773 24.8949457,32.1525921 25.474342,25.2465542 C25.6558214,23.0968603 25.2521788,21.6234324 24.4184922,20.7332994 C23.9588119,20.2424956 23.4737204,20.0228476 23.1015974,19.9687623 L15.1289333,18.1064988 C15.0788208,18.0911991 14.9434651,18.0591685 14.7667652,18.0282275 C14.169132,17.9235791 13.5401983,17.9081123 12.9308051,18.0435027 C11.8493625,18.2837695 11.0333579,18.9690819 10.6837787,20.1440321 C10.0191343,22.3577965 10.7288978,24.0972418 14.0761134,25.0121147 L16.0071132,25.4435349 Z"/>

My current settings file
https://dnl.rs/s/svgo.json

If viewbox is present set width/height = 100%

Rather than removing width and height if the viewbox is present, I'd like to be able to set width and height to 100%. Taking the removeDimensions.js function and tweaking it a little is all that is needed?
exports.fn = function(item) { if ( item.isElem('svg') && item.hasAttr('viewBox') ) { item.attr('width', '100%'); item.attr('height', '100%'); } };

Not running cleanupNumericValues

In both the app and beta, the optimizations for cleanupNumericValues are not being performed. All the numbers remain at 4 places, if run as default or if the config is set using

{
"name": "cleanupNumericValues",
"params": {
"floatPrecision": 2
}
},

The order in which SVGO plugins are run should not be determined by the order in which the plugins are listed in svgo.json

Currently the order in which SVGO plugins are executed on an exported SVG depends on the order in which the plugins are specified in the svgo.json configuration file: https://github.com/BohemianCoding/svgo-compressor/blob/18d341102a6533bdc292a3962e81ecc4ff92aa18/src/plugin.js#L37-L86

The plugin execution order in SVGO is fixed in order to guarantee the highest possible optimized result. You can see the order in which SVGO executes plugins here: https://github.com/svg/svgo/blob/master/.svgo.yml. After parsing the plugins from the svgo.json config file, this Sketch plugin should sort the enabled plugins according to this predefined order before executing svgo on the exported SVG.

The reason why the order of SVGO plugins is important is discussed a bit here . (specifically the part where it mentions that every plugin "has a specific position in the plugins list"): https://github.com/svg/svgo/blob/ba07843565aa50cd9dfde0c8806921c14f532096/docs/how-it-works/en.md

Basically, SVGO plugins are designed to build on each other as they are executed one by one. For example, consider the below SVG:

<svg>
  <path d="M 0 0 L 100 100" />
  <g>
    <path d="M 200 200 L 300 300" />
  </g>
</svg>

Executing the mergePaths plugin before the collapseGroups plugin will result in the following SVG (first merge sibling paths, and then remove unnecessary groups):

<svg>
  <path d="M 0 0 L 100 100" />
  <path d="M 200 200 L 300 300" />
</svg>

Whereas executing collapseGroups before mergePaths will give much better results (first remove unnecessary groups, which increases the chances that there will be sibling paths that can be merged):

<svg>
  <path d="M 0 0 L 100 100 M 200 200 L 300 300" />
</svg>

SVGO Compressor removes fill property when value is "#000000"

When I export a shape with a fill property of #000000, SVGO Compressor removes the fill property entirely. If I change the color to something other than black, it keeps it after compression/export.

Example uncompressed file:

<?xml version="1.0" encoding="UTF-8"?>
<svg width="17px" height="17px" viewBox="0 0 17 17" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
    <title>app-icon-heart--small</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="app-icon-heart--small" fill-rule="nonzero" fill="#000000">
            <path d="M15.4068436,2.17089073 C17.5691122,4.26460667 17.5349812,7.59873407 15.2773724,9.7964278 C14.6702254,10.3873505 13.9259068,11.1119879 13.0513801,11.9635311 C12.0354344,12.9527768 9.34500523,15.5728995 9.19743721,15.7165512 L8.49966867,16.3958015 L7.80212794,15.7163172 C6.68030901,14.6235375 3.42077887,11.4493148 1.72276244,9.79636229 C-0.534826983,7.59868744 -0.569256108,4.26455758 1.59296176,2.17089073 C3.53163474,0.293681487 6.50329863,0.756477678 8.49963311,2.90298904 C10.4852961,0.775194707 13.4760552,0.30131604 15.4068436,2.17089073 Z M11.6542358,10.5324495 C12.5307468,9.67897404 13.2751651,8.95423969 13.8823707,8.36325991 C15.3392473,6.94504754 15.3600843,4.90956577 14.0155898,3.60769714 C12.8071984,2.4376166 10.614175,3.0217881 9.35121478,5.07106582 L8.50286226,6.44760155 L7.6502282,5.07371371 C6.36247121,2.99869261 4.20129812,2.42920106 2.98421562,3.60769714 C1.63983138,4.90945899 1.66085037,6.94494591 3.11783146,8.36325991 C4.54096447,9.74862413 7.06073108,12.2023595 8.49997711,13.6041131 C9.40436299,12.7233909 10.9422816,11.2256929 11.6542358,10.5324495 Z" id="Stroke-3"></path>
        </g>
    </g>
</svg>

And the same file compressed:

<svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 17 17">
  <path d="M15.4068436,2.17089073 C17.5691122,4.26460667 17.5349812,7.59873407 15.2773724,9.7964278 C14.6702254,10.3873505 13.9259068,11.1119879 13.0513801,11.9635311 C12.0354344,12.9527768 9.34500523,15.5728995 9.19743721,15.7165512 L8.49966867,16.3958015 L7.80212794,15.7163172 C6.68030901,14.6235375 3.42077887,11.4493148 1.72276244,9.79636229 C-0.534826983,7.59868744 -0.569256108,4.26455758 1.59296176,2.17089073 C3.53163474,0.293681487 6.50329863,0.756477678 8.49963311,2.90298904 C10.4852961,0.775194707 13.4760552,0.30131604 15.4068436,2.17089073 Z M11.6542358,10.5324495 C12.5307468,9.67897404 13.2751651,8.95423969 13.8823707,8.36325991 C15.3392473,6.94504754 15.3600843,4.90956577 14.0155898,3.60769714 C12.8071984,2.4376166 10.614175,3.0217881 9.35121478,5.07106582 L8.50286226,6.44760155 L7.6502282,5.07371371 C6.36247121,2.99869261 4.20129812,2.42920106 2.98421562,3.60769714 C1.63983138,4.90945899 1.66085037,6.94494591 3.11783146,8.36325991 C4.54096447,9.74862413 7.06073108,12.2023595 8.49997711,13.6041131 C9.40436299,12.7233909 10.9422816,11.2256929 11.6542358,10.5324495 Z"/>
</svg>

Is this intentional? Is there a setting I can use to prevent this from happening?

This is using Sketch 46.2 plugin version 1.3.7, macOS 10.12.6 (Sierra)

Layer Name as ID

Hi there. I'm using SVGO Compressor to export my SVG in order to target elements and read their ID. What I'm finding however is that the ID in in the exported SVG is the name of the symbol rather than the name of the layer.

Is there a way that I can have the ID come out as my unique layer name rather than repeating the name of the symbol?

To put this in context, my illustration includes a bunch of underground stations, all using the same 'station-underground' symbol but with the station name i.e.: 'gunnersbury-underground-station' as the layer name.

Many thanks.

Is there a way to strip slashes (or other special characters) from SVG ids?

I usually name my artboards after the path I want my icons to get exported, e.g.
icons/tabbar/xyz (so the icon get's exported to icons/tabbar/xyz.svg)

Unfortunately the SVG exported adds this path as the SVG id:

Is there any way to let SVGO 'normalize' this id to e.g. something like 'icons-tabbar-xyz'?

Add convertPathData plugin

I think that it is important to add convertPathData plugin in svgo.json by default. Without convertPathData this plugin is practically useless because It does not get hardly compression. convertPathData will compress a svg of 113kb to 69 kb. Most people will not change parameters in svgo.json.

Auto compress when right clicking 'Copy SVG Code'

Great plugin!

I noticed right clicking Copy SVG Code shows the original uncompressed code, however it would be great to override this somehow. The flexibility of having this as a quick 'SVG copy' with compression would be really useful.

What params are available for the plugins?

More support than issue, but when I want to change svgo.json, where can I find the docs to know what params can be changed and what they do? On the github page for svgo I couldn't find anything about this either. At least not that I could understand. :)

If I wanted to change the param 'RemoveDoctype' for instance, what params can I change there?

Cannot override default settings.

I tried to update couple of settings. It seems like nothing happened.

  //svgo.json
    {
      "name": "cleanupNumericValues",
      "params": {
        "floatPrecision": 2
      }
    },
    {
      "name": "removeDesc",
      "params": {
        "removeAny": true
      }
    },

I haven't tried other setting values, but the above two do not work at all.

Multipass?

In order to collapse groups fully into 1 path, as well as collapse odd transform/translates that cancel each other out, I need more than 1 pass. The current method is to export my svg's using this tool, then to use svgo via my terminal on the same file.

Will multipass be a thing in the future for svgo-compressor?

Unable to use custom plugin

Following the README, I've just used put this plugin from @bomberstudios into my home directory ~/SVGO-plugins/convertIdToClass.js

Then, in my config, I'm using:
{ "path": "~/SVGO-plugins/convertIdToClass.js", "enabled": true }
But the plugin doesn't seem to work. Is there any log output I can view?

I'm on Sketch 55.2

Thanks!

Support compression without export?

Hey!
Just found this plugin and really like it but I use zeplin and export directly to zeplin so the svg files end up as assets in the zeplin app.

Would it be possible to compress the svgs without the export so that they will be compressed in zeplin?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.