Skip to content

Commit

Permalink
Merge pull request #186 from l-alexandrov/Feature/MigrateToSVGO3
Browse files Browse the repository at this point in the history
SVGO 3 Support
  • Loading branch information
freekmurze authored Mar 10, 2023
2 parents 1201bca + c55eb4c commit d997e01
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 8 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
run: |
sudo apt-get update -y
sudo apt-get install -y jpegoptim pngquant gifsicle optipng libjpeg-progs webp
sudo npm install -g svgo@1.3.2
sudo npm install -g svgo
- name: Setup PHP
uses: shivammathur/setup-php@v2
Expand Down
10 changes: 4 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ Here's how to install all the optimizers on Ubuntu:
sudo apt-get install jpegoptim
sudo apt-get install optipng
sudo apt-get install pngquant
sudo npm install -g svgo@1.3.2
sudo npm install -g svgo
sudo apt-get install gifsicle
sudo apt-get install webp
```
Expand All @@ -71,7 +71,7 @@ And here's how to install the binaries on MacOS (using [Homebrew](https://brew.s
brew install jpegoptim
brew install optipng
brew install pngquant
npm install -g svgo@1.3.2
npm install -g svgo
brew install gifsicle
brew install webp
```
Expand All @@ -82,7 +82,7 @@ sudo dnf install epel-release
sudo dnf install jpegoptim
sudo dnf install optipng
sudo dnf install pngquant
sudo npm install -g svgo@1.3.2
sudo npm install -g svgo
sudo dnf install gifsicle
sudo dnf install libwebp-tools
```
Expand All @@ -106,12 +106,10 @@ PNGs will be made smaller by running them through two tools. The first one is [P

### SVGs

SVGs will be minified by [SVGO 1](https://github.com/svg/svgo). SVGO's default configuration will be used, with the omission of the `cleanupIDs` plugin because that one is known to cause troubles when displaying multiple optimized SVGs on one page.
SVGs will be minified by [SVGO](https://github.com/svg/svgo). SVGO's default configuration will be used, with the omission of the `cleanupIDs` and `removeViewBox` plugins because these are known to cause troubles when displaying multiple optimized SVGs on one page.

Please be aware that SVGO can break your svg. You'll find more info on that in this [excellent blogpost](https://www.sarasoueidan.com/blog/svgo-tools/) by [Sara Soueidan](https://twitter.com/SaraSoueidan).

For now, the default configuration used for SVGO is only compatible with SVGO 1.x. To use options compatible with SVGO 2.x, you need to [create your own optimization chain](#creating-your-own-optimization-chains).

### GIFs

GIFs will be optimized by [Gifsicle](http://www.lcdf.org/gifsicle/). These options will be used:
Expand Down
2 changes: 1 addition & 1 deletion src/OptimizerChainFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public static function create(array $config = []): OptimizerChain
]))

->addOptimizer(new Svgo([
'--disable={cleanupIDs,removeViewBox}',
'--config=svgo.config.js',
]))

->addOptimizer(new Gifsicle([
Expand Down
13 changes: 13 additions & 0 deletions svgo.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
module.exports = {
plugins: [
{
name: 'preset-default',
params: {
overrides: {
cleanupIDs: false,
removeViewBox: false,
},
},
},
],
};

0 comments on commit d997e01

Please sign in to comment.