{"id":17663536,"url":"https://github.com/webpack-contrib/image-minimizer-webpack-plugin","last_synced_at":"2025-05-14T13:06:12.508Z","repository":{"id":37077341,"uuid":"84075674","full_name":"webpack-contrib/image-minimizer-webpack-plugin","owner":"webpack-contrib","description":"Webpack loader and plugin to compress images using imagemin","archived":false,"fork":false,"pushed_at":"2025-02-04T12:40:25.000Z","size":10555,"stargazers_count":245,"open_issues_count":5,"forks_count":41,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-05-08T00:06:27.879Z","etag":null,"topics":["image-optimization","imagemin","loader","webpack","webpack-loader","webpack-plugin"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/webpack-contrib.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"open_collective":"webpack"}},"created_at":"2017-03-06T13:22:27.000Z","updated_at":"2025-05-02T15:20:14.000Z","dependencies_parsed_at":"2024-02-04T09:23:49.940Z","dependency_job_id":"6ee1101b-bdf8-40c8-bd8b-56c0879ac436","html_url":"https://github.com/webpack-contrib/image-minimizer-webpack-plugin","commit_stats":{"total_commits":341,"total_committers":24,"mean_commits":"14.208333333333334","dds":0.8035190615835777,"last_synced_commit":"7cb4a5f85ee9e0e0e89519d3dfeed4d959d3ecc5"},"previous_names":["itgalaxy/imagemin-webpack"],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webpack-contrib%2Fimage-minimizer-webpack-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webpack-contrib%2Fimage-minimizer-webpack-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webpack-contrib%2Fimage-minimizer-webpack-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webpack-contrib%2Fimage-minimizer-webpack-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/webpack-contrib","download_url":"https://codeload.github.com/webpack-contrib/image-minimizer-webpack-plugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254149949,"owners_count":22022851,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["image-optimization","imagemin","loader","webpack","webpack-loader","webpack-plugin"],"created_at":"2024-10-23T19:06:58.707Z","updated_at":"2025-05-14T13:06:12.417Z","avatar_url":"https://github.com/webpack-contrib.png","language":"JavaScript","readme":"\u003c!--lint disable no-html--\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/webpack/webpack\"\u003e\n    \u003cimg width=\"200\" height=\"200\" hspace=\"10\"\n      src=\"https://cdn.rawgit.com/webpack/media/e7485eb2/logo/icon.svg\"\u003e\n  \u003c/a\u003e\n  \u003ch1\u003eImagemin Webpack\u003c/h1\u003e\n  \u003cp\u003e\n    Plugin and Loader for \u003ca href=\"http://webpack.js.org/\"\u003ewebpack\u003c/a\u003e to optimize (compress) all images using \u003ca href=\"https://github.com/imagemin/imagemin\"\u003eimagemin\u003c/a\u003e.\n    Do not worry about size of images, now they are always optimized/compressed.\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003c!--lint enable no-html--\u003e\n\n[![npm][npm]][npm-url]\n[![node][node]][node-url]\n[![tests][tests]][tests-url]\n[![cover][cover]][cover-url]\n[![discussion][discussion]][discussion-url]\n[![size][size]][size-url]\n\n# image-minimizer-webpack-plugin\n\n\u003c!--\nThis TOC was generated by VS Code extension [Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one)\nwith option `\"markdown.extension.toc.levels\": \"2..6\"`\n--\u003e\n\n- [Getting Started](#getting-started)\n  - [Install optimize/generate tool](#install-optimizegenerate-tool)\n  - [Optimize with `imagemin`](#optimize-with-imagemin)\n  - [[**DEPRECATED**] Optimize with `squoosh`](#deprecated-optimize-with-squoosh)\n  - [Optimize with `sharp`](#optimize-with-sharp)\n  - [Optimize with `svgo`](#optimize-with-svgo)\n  - [Advanced setup](#advanced-setup)\n    - [Query Parameters (only `squoosh` and `sharp` currently)](#query-parameters-only-squoosh-and-sharp-currently)\n    - [Standalone Loader](#standalone-loader)\n    - [Standalone Plugin](#standalone-plugin)\n- [Plugin Options](#plugin-options)\n  - [`test`](#test)\n  - [`include`](#include)\n  - [`exclude`](#exclude)\n  - [`minimizer`](#minimizer)\n    - [Available minimizers](#available-minimizers)\n    - [Single minimizer example for `imagemin`](#single-minimizer-example-for-imagemin)\n    - [[**DEPRECATED**] Single minimizer example for `squoosh`](#deprecated-single-minimizer-example-for-squoosh)\n    - [Single minimizer example for `sharp`](#single-minimizer-example-for-sharp)\n    - [Single minimizer example for user defined implementation](#single-minimizer-example-for-user-defined-implementation)\n    - [Multiple minimizers example](#multiple-minimizers-example)\n    - [Minimizer options](#minimizer-options)\n      - [`implementation`](#implementation)\n      - [`options`](#options)\n      - [`filter`](#filter)\n      - [`filename`](#filename)\n  - [`generator`](#generator)\n    - [Available generators](#available-generators)\n    - [Generator example for `imagemin`](#generator-example-for-imagemin)\n    - [[**DEPRECATED**] Generator example for `squoosh`](#deprecated-generator-example-for-squoosh)\n    - [Generator example for `sharp`](#generator-example-for-sharp)\n    - [Generator example for user defined implementation](#generator-example-for-user-defined-implementation)\n    - [Generator options](#generator-options)\n      - [`type`](#type)\n      - [`preset`](#preset)\n      - [`implementation`](#implementation-1)\n      - [`options`](#options-1)\n      - [`filter`](#filter-1)\n      - [`filename`](#filename-1)\n  - [`severityError`](#severityerror)\n  - [`loader`](#loader)\n  - [`concurrency`](#concurrency)\n  - [`deleteOriginalAssets`](#deleteoriginalassets)\n- [Loader Options](#loader-options)\n  - [`minimizer`](#minimizer-1)\n    - [Loader minimizer example for `imagemin`](#loader-minimizer-example-for-imagemin)\n  - [`generator`](#generator-1)\n    - [Loader generator example for `imagemin`](#loader-generator-example-for-imagemin)\n  - [`severityError`](#severityerror-1)\n- [Additional API](#additional-api)\n  - [`imageminNormalizeConfig(config)`](#imageminnormalizeconfigconfig)\n- [Examples](#examples)\n  - [Optimize images based on size](#optimize-images-based-on-size)\n  - [Optimize and generate `webp` images](#optimize-and-generate-webp-images)\n  - [Generate `webp` images from copied assets](#generate-webp-images-from-copied-assets)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Getting Started\n\nThis plugin can use 4 tools to optimize/generate images:\n\n- [`imagemin`](https://github.com/imagemin/imagemin) - optimize your images by default, since it is stable and works with all types of images\n- **DEPRECATED** [`squoosh`](https://github.com/GoogleChromeLabs/squoosh/tree/dev/libsquoosh) - while working in experimental mode with `.jpg`, `.jpeg`, `.png`, `.webp`, `.avif` file types.\n- [`sharp`](https://github.com/lovell/sharp) - High performance Node.js image processing, the fastest module to resize and compress JPEG, PNG, WebP, AVIF and TIFF images. Uses the libvips library.\n- [`svgo`](https://github.com/svg/svgo) - tool for optimizing SVG vector graphics files. Supports only SVG files minification.\n\n\u003e [!WARNING]\n\u003e\n\u003e By default we don't install anything\n\n### Install optimize/generate tool\n\nTo begin, you'll need to install `image-minimizer-webpack-plugin` and image minimizer/generator:\n\n- [`imagemin`](https://github.com/imagemin/imagemin):\n\n```console\nnpm install image-minimizer-webpack-plugin imagemin --save-dev\n```\n\n\u003e [!WARNING]\n\u003e\n\u003e imagemin uses plugin to optimize/generate images, so you need to install them too\n\n- **DEPRECATED** [`squoosh`](https://github.com/GoogleChromeLabs/squoosh/tree/dev/libsquoosh):\n\n```console\nnpm install image-minimizer-webpack-plugin @squoosh/lib --save-dev\n```\n\n- [`sharp`](https://github.com/lovell/sharp):\n\n```console\nnpm install image-minimizer-webpack-plugin sharp --save-dev\n```\n\n- [`svgo`](https://github.com/svg/svgo):\n\n```console\nnpm install image-minimizer-webpack-plugin svgo --save-dev\n```\n\nImages can be optimized in two modes:\n\n1.  [Lossless](https://en.wikipedia.org/wiki/Lossless_compression) (without loss of quality).\n2.  [Lossy](https://en.wikipedia.org/wiki/Lossy_compression) (with loss of quality).\n\n### Optimize with [`imagemin`](https://github.com/imagemin/imagemin)\n\n\u003e [!NOTE]\n\u003e\n\u003e - [imagemin-mozjpeg](https://github.com/imagemin/imagemin-mozjpeg) can be configured in lossless and lossy mode.\n\u003e - [imagemin-svgo](https://github.com/imagemin/imagemin-svgo) can be configured in lossless and lossy mode.\n\nExplore the options to get the best result for you.\n\n**Recommended imagemin plugins for lossless optimization**\n\n```shell\nnpm install imagemin-gifsicle imagemin-jpegtran imagemin-optipng imagemin-svgo --save-dev\n```\n\n**Recommended imagemin plugins for lossy optimization**\n\n```shell\nnpm install imagemin-gifsicle imagemin-mozjpeg imagemin-pngquant imagemin-svgo --save-dev\n```\n\nFor `imagemin-svgo` v9.0.0+ need use svgo [configuration](https://github.com/svg/svgo#configuration)\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  module: {\n    rules: [\n      {\n        test: /\\.(jpe?g|png|gif|svg)$/i,\n        type: \"asset\",\n      },\n    ],\n  },\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.imageminMinify,\n          options: {\n            // Lossless optimization with custom option\n            // Feel free to experiment with options for better result for you\n            plugins: [\n              [\"gifsicle\", { interlaced: true }],\n              [\"jpegtran\", { progressive: true }],\n              [\"optipng\", { optimizationLevel: 5 }],\n              // Svgo configuration here https://github.com/svg/svgo#configuration\n              [\n                \"svgo\",\n                {\n                  plugins: [\n                    {\n                      name: \"preset-default\",\n                      params: {\n                        overrides: {\n                          removeViewBox: false,\n                          addAttributesToSVGElement: {\n                            params: {\n                              attributes: [\n                                { xmlns: \"http://www.w3.org/2000/svg\" },\n                              ],\n                            },\n                          },\n                        },\n                      },\n                    },\n                  ],\n                },\n              ],\n            ],\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n### **DEPRECATED** Optimize with [`squoosh`](https://github.com/GoogleChromeLabs/squoosh/tree/dev/libsquoosh)\n\n```console\nnpm install @squoosh/lib --save-dev\n```\n\n**Recommended `@squoosh/lib` options for lossy optimization**\n\nFor lossy optimization we recommend using the default settings of `@squoosh/lib` package.\nThe default values and supported file types for each option can be found in the [codecs.ts](https://github.com/GoogleChromeLabs/squoosh/blob/dev/libsquoosh/src/codecs.ts) file under codecs.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  module: {\n    rules: [\n      // You need this, if you are using `import file from \"file.ext\"`, for `new URL(...)` syntax you don't need it\n      {\n        test: /\\.(jpe?g|png)$/i,\n        type: \"asset\",\n      },\n    ],\n  },\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.squooshMinify,\n          options: {\n            // Your options for `squoosh`\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n**Recommended `squoosh` options for lossless optimization**\n\nFor lossless optimization we recommend using the options listed below in `minimizer.options.encodeOptions`.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  module: {\n    rules: [\n      // You need this, if you are using `import file from \"file.ext\"`, for `new URL(...)` syntax you don't need it\n      {\n        test: /\\.(jpe?g|png)$/i,\n        type: \"asset\",\n      },\n    ],\n  },\n  optimization: {\n    minimizer: [\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.squooshMinify,\n          options: {\n            encodeOptions: {\n              mozjpeg: {\n                // That setting might be close to lossless, but it’s not guaranteed\n                // https://github.com/GoogleChromeLabs/squoosh/issues/85\n                quality: 100,\n              },\n              webp: {\n                lossless: 1,\n              },\n              avif: {\n                // https://github.com/GoogleChromeLabs/squoosh/blob/dev/codecs/avif/enc/README.md\n                cqLevel: 0,\n              },\n            },\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n### Optimize with [`sharp`](https://github.com/lovell/sharp)\n\n```console\nnpm install sharp --save-dev\n```\n\n**Recommended `sharp` options for lossy optimization**\n\nFor lossy optimization we recommend using the default settings of `sharp` package.\nThe default values and supported file types for each option can be found in the [sharp documentation](https://sharp.pixelplumbing.com/api-output).\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  module: {\n    rules: [\n      // You need this, if you are using `import file from \"file.ext\"`, for `new URL(...)` syntax you don't need it\n      {\n        test: /\\.(jpe?g|png)$/i,\n        type: \"asset\",\n      },\n    ],\n  },\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.sharpMinify,\n          options: {\n            encodeOptions: {\n              // Your options for `sharp`\n              // https://sharp.pixelplumbing.com/api-output\n            },\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n**Recommended `sharp` options for lossless optimization**\n\nFor lossless optimization we recommend using the options listed below in `minimizer.options.encodeOptions`.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  module: {\n    rules: [\n      // You need this, if you are using `import file from \"file.ext\"`, for `new URL(...)` syntax you don't need it\n      {\n        test: /\\.(jpe?g|png)$/i,\n        type: \"asset\",\n      },\n    ],\n  },\n  optimization: {\n    minimizer: [\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.sharpMinify,\n          options: {\n            encodeOptions: {\n              jpeg: {\n                // https://sharp.pixelplumbing.com/api-output#jpeg\n                quality: 100,\n              },\n              webp: {\n                // https://sharp.pixelplumbing.com/api-output#webp\n                lossless: true,\n              },\n              avif: {\n                // https://sharp.pixelplumbing.com/api-output#avif\n                lossless: true,\n              },\n\n              // png by default sets the quality to 100%, which is same as lossless\n              // https://sharp.pixelplumbing.com/api-output#png\n              png: {},\n\n              // gif does not support lossless compression at all\n              // https://sharp.pixelplumbing.com/api-output#gif\n              gif: {},\n            },\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n### Optimize with [`svgo`](https://github.com/svg/svgo)\n\n```console\nnpm install svgo --save-dev\n```\n\n**Recommended `svgo` options for optimization**\n\nFor optimization we recommend using the options listed below in `minimizer.options.encodeOptions`.\nThe default values for plugins can be found in the [svgo plugins source code](https://github.com/svg/svgo/tree/main/plugins).\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  module: {\n    rules: [\n      // You need this, if you are using `import file from \"file.ext\"`, for `new URL(...)` syntax you don't need it\n      {\n        test: /\\.(svg)$/i,\n        type: \"asset\",\n      },\n    ],\n  },\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.svgoMinify,\n          options: {\n            encodeOptions: {\n              // Pass over SVGs multiple times to ensure all optimizations are applied. False by default\n              multipass: true,\n              plugins: [\n                // set of built-in plugins enabled by default\n                // see: https://github.com/svg/svgo#default-preset\n                \"preset-default\",\n              ],\n            },\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n### Advanced setup\n\nIf you want to use `loader` or `plugin` standalone see sections below, but this is **not recommended**.\n\nBy default, plugin configures `loader` (please use the `loader` option if you want to disable this behaviour), therefore you should not setup standalone loader when you use a plugin setup.\n\nLoader optimizes or generates images using options, so inlined images via `data` URI (i.e. `data:`) will be optimized or generated too, not inlined images will be optimized too.\n\n#### Query Parameters (only `squoosh` and `sharp` currently)\n\nThe plugin supports the following query parameters:\n\n- `width`/`w` - allows you to set the image width\n- `height`/`h` - allows you to set the image height\n- `as` - to specify the [preset](#preset) option\n\n  **Only supported for `sharp` currently:**\n\n- `unit`/`u` - can be `px` or `percent` and allows you to resize by a percentage of the image's size.\n\nExamples:\n\n```js\nconst myImage1 = new URL(\"image.png?width=150\u0026height=120\", import.meta.url);\nconst myImage2 = new URL(\"image.png?w=150\u0026h=120\", import.meta.url);\n// You can omit one of the parameters to auto-scale\nconst myImage3 = new URL(\"image.png?w=150\", import.meta.url);\n// It works with the `preset` query parameter\nconst myImage4 = new URL(\"image.png?as=webp\u0026w=150\u0026h=120\", import.meta.url);\n// You can use `auto` to reset `width` or `height` from the `preset` option\nconst myImage5 = new URL(\"image.png?as=webp\u0026w=150\u0026h=auto\", import.meta.url);\n// You can use `unit` to get the non-retina resize of images that are retina sized\nconst myImage6 = new URL(\"image.png?width=50\u0026unit=percent\", import.meta.url);\n```\n\n```css\n.class {\n  background: url(\"./image.png?width=150\u0026height=120\");\n}\n```\n\n```html\n\u003cpicture\u003e\n  \u003csource srcset=\"photo.jpg?as=avif\u0026width=150\u0026height=120\" type=\"image/avif\" /\u003e\n  \u003csource srcset=\"photo.jpg?as=webp\u0026width=150\u0026height=120\" type=\"image/webp\" /\u003e\n  \u003cimg src=\"photo.jpg?width=150\u0026height=120\" alt=\"photo\" /\u003e\n\u003c/picture\u003e\n```\n\n\u003e [!NOTE]\n\u003e\n\u003e You need to setup `avif` and `webp` presets, [example for webp](#optimize-and-generate-webp-images).\n\n#### Standalone Loader\n\n[Documentation: Using loaders](https://webpack.js.org/concepts/loaders/).\n\nIn your `webpack.config.js`, add the `ImageMinimizerPlugin.loader` and specify the [asset modules options](https://webpack.js.org/guides/asset-modules/) (if you use images in `import`):\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  module: {\n    rules: [\n      // You need this, if you are using `import file from \"file.ext\"`, for `new URL(...)` syntax you don't need it\n      {\n        test: /\\.(jpe?g|png|gif|svg)$/i,\n        type: \"asset\",\n      },\n      // We recommend using only for the \"production\" mode\n      {\n        test: /\\.(jpe?g|png|gif|svg)$/i,\n        enforce: \"pre\",\n        use: [\n          {\n            loader: ImageMinimizerPlugin.loader,\n            options: {\n              minimizer: {\n                implementation: ImageMinimizerPlugin.imageminMinify,\n                options: {\n                  plugins: [\n                    \"imagemin-gifsicle\",\n                    \"imagemin-mozjpeg\",\n                    \"imagemin-pngquant\",\n                    \"imagemin-svgo\",\n                  ],\n                },\n              },\n            },\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n#### Standalone Plugin\n\n[Documentation: Using plugins](https://webpack.js.org/concepts/plugins/).\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  module: {\n    rules: [\n      // You need this, if you are using `import file from \"file.ext\"`, for `new URL(...)` syntax you don't need it\n      {\n        test: /\\.(jpe?g|png|gif|svg)$/i,\n        type: \"asset\",\n      },\n    ],\n  },\n  optimization: {\n    minimizer: [\n      // Extend default minimizer, i.e. `terser-webpack-plugin` for JS\n      \"...\",\n      // We recommend using only for the \"production\" mode\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.imageminMinify,\n          options: {\n            plugins: [\n              \"imagemin-gifsicle\",\n              \"imagemin-mozjpeg\",\n              \"imagemin-pngquant\",\n              \"imagemin-svgo\",\n            ],\n          },\n        },\n        // Disable `loader`\n        loader: false,\n      }),\n    ],\n  },\n};\n```\n\n## Plugin Options\n\n- **[`test`](#test)**\n- **[`include`](#include)**\n- **[`exclude`](#exclude)**\n- **[`minimizer`](#minimizer)**\n- **[`generator`](#generator)**\n- **[`severityError`](#severityerror)**\n- **[`loader`](#loader)**\n- **[`concurrency`](#concurrency)**\n- **[`deleteOriginalAssets`](#deleteoriginalassets)**\n\n### `test`\n\nType:\n\n```ts\ntype test = string | RegExp | Array\u003cstring | RegExp\u003e;\n```\n\nDefault: `/\\.(jpe?g\\|png\\|gif\\|tif\\|webp\\|svg\\|avif)\\$/i`\n\nTest to match files against.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        test: /\\.(jpe?g|png|gif|svg)$/i,\n      }),\n    ],\n  },\n};\n```\n\n### `include`\n\nType:\n\n```ts\ntype include = string | RegExp | Array\u003cstring | RegExp\u003e;\n```\n\nDefault: `undefined`\n\nFiles to include.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        include: /\\/includes/,\n      }),\n    ],\n  },\n};\n```\n\n### `exclude`\n\nType:\n\n```ts\ntype exclude = string | RegExp | Array\u003cstring | RegExp\u003e;\n```\n\nDefault: `undefined`\n\nFiles to exclude.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        exclude: /\\/excludes/,\n      }),\n    ],\n  },\n};\n```\n\n### `minimizer`\n\nType:\n\n```ts\ntype minimizer =\n  | {\n      implementation: (\n        original: {\n          filename: string;\n          data: Buffer;\n          warnings: Array\u003cError\u003e;\n          errors: Array\u003cError\u003e;\n          info: import(\"webpack\").AssetInfo;\n        },\n        options?:\n          | {\n              [key: string]: any;\n            }\n          | undefined,\n      ) =\u003e Promise\u003c{\n        filename: string;\n        data: Buffer;\n        warnings: Array\u003cError\u003e;\n        errors: Array\u003cError\u003e;\n        info: import(\"webpack\").AssetInfo;\n      }\u003e \u0026 {\n        setup?: (() =\u003e void) | undefined;\n        teardown?: (() =\u003e void) | undefined;\n      };\n      options?:\n        | {\n            [key: string]: any;\n          }\n        | undefined;\n      filter?: (source: Buffer, sourcePath: string) =\u003e boolean | undefined;\n      filename?:\n        | string\n        | ((\n            pathData: {\n              filename?: string | undefined;\n            },\n            assetInfo?: import(\"webpack\").AssetInfo | undefined,\n          ) =\u003e string)\n        | undefined;\n    }\n  | Array\u003c{\n      implementation: (\n        original: {\n          filename: string;\n          data: Buffer;\n          warnings: Array\u003cError\u003e;\n          errors: Array\u003cError\u003e;\n          info: import(\"webpack\").AssetInfo;\n        },\n        options?:\n          | {\n              [key: string]: any;\n            }\n          | undefined,\n      ) =\u003e Promise\u003c{\n        filename: string;\n        data: Buffer;\n        warnings: Array\u003cError\u003e;\n        errors: Array\u003cError\u003e;\n        info: import(\"webpack\").AssetInfo;\n      }\u003e \u0026 {\n        setup?: (() =\u003e void) | undefined;\n        teardown?: (() =\u003e void) | undefined;\n      };\n      options?:\n        | {\n            [key: string]: any;\n          }\n        | undefined;\n      filter?: (source: Buffer, sourcePath: string) =\u003e boolean | undefined;\n      filename?:\n        | string\n        | ((\n            pathData: {\n              filename?: string | undefined;\n            },\n            assetInfo?: import(\"webpack\").AssetInfo | undefined,\n          ) =\u003e string)\n        | undefined;\n    }\u003e;\n```\n\nDefault: `undefined`\n\nAllows to setup default minify function.\n\n#### Available minimizers\n\n- `ImageMinimizerPlugin.imageminMinify`\n- **DEPRECATED** `ImageMinimizerPlugin.squooshMinify`\n- `ImageMinimizerPlugin.sharpMinify`\n- `ImageMinimizerPlugin.svgoMinify`\n\n#### Single minimizer example for `imagemin`\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          // Implementation\n          implementation: ImageMinimizerPlugin.imageminMinify,\n          // Options\n          options: {\n            plugins: [\n              \"imagemin-gifsicle\",\n              \"imagemin-mozjpeg\",\n              \"imagemin-pngquant\",\n              \"imagemin-svgo\",\n            ],\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\nMore information and examples [here](https://github.com/imagemin/imagemin).\n\n#### **DEPRECATED** Single minimizer example for `squoosh`\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          // Implementation\n          implementation: ImageMinimizerPlugin.squooshMinify,\n          // Options\n          options: {\n            encodeOptions: {\n              mozjpeg: {\n                quality: 90,\n              },\n            },\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\nMore information and examples [here](https://github.com/GoogleChromeLabs/squoosh/tree/dev/libsquoosh).\n\n#### Single minimizer example for `sharp`\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          // Implementation\n          implementation: ImageMinimizerPlugin.sharpMinify,\n          // Options\n          options: {\n            encodeOptions: {\n              jpeg: {\n                quality: 90,\n              },\n            },\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\nMore information and examples [here](https://sharp.pixelplumbing.com/api-output#toformat).\n\n#### Single minimizer example for user defined implementation\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: async (original, options) =\u003e {\n            const inputExt = path.extname(original.filename).toLowerCase();\n\n            if (inputExt !== \".xxx\") {\n              // Return `null` if the implementation does not support this file type\n              return null;\n            }\n\n            let result;\n\n            try {\n              result = await minifyAndReturnBuffer(original.data);\n            } catch (error) {\n              // Store error and return `null` if there was an error\n              original.errors.push(error);\n              return null;\n            }\n\n            return {\n              filename: original.filename,\n              data: result,\n              warnings: [...original.warnings],\n              errors: [...original.errors],\n              info: {\n                ...original.info,\n                // Please always set it to prevent double minification\n                minimized: true,\n                // Optional\n                minimizedBy: [\"custom-name-of-minimication\"],\n              },\n            };\n          },\n          options: {\n            // Custom options\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n#### Multiple minimizers example\n\nAllows to setup multiple minimizers.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: [\n          {\n            // `sharp` will handle all bitmap formats (JPG, PNG, GIF, ...)\n            implementation: ImageMinimizerPlugin.sharpMinify,\n\n            // exclude SVG if implementation support it. Not required for `sharp`.\n            // filter: (source, sourcePath) =\u003e !(/\\.(svg)$/i.test(sourcePath)),\n\n            options: {\n              encodeOptions: {\n                // Your options for `sharp`\n                // https://sharp.pixelplumbing.com/api-output\n              },\n            },\n          },\n          {\n            // `svgo` will handle vector images (SVG)\n            implementation: ImageMinimizerPlugin.svgoMinify,\n            options: {\n              encodeOptions: {\n                // Pass over SVGs multiple times to ensure all optimizations are applied. False by default\n                multipass: true,\n                plugins: [\n                  // set of built-in plugins enabled by default\n                  // see: https://github.com/svg/svgo#default-preset\n                  \"preset-default\",\n                ],\n              },\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\n#### Minimizer options\n\n##### `implementation`\n\nType:\n\n```ts\ntype implementation = (\n  original: {\n    filename: string;\n    data: Buffer;\n    warnings: Array\u003cError\u003e;\n    errors: Array\u003cError\u003e;\n    info: import(\"webpack\").AssetInfo;\n  },\n  options?: BasicTransformerOptions\u003cT\u003e,\n) =\u003e Promise\u003c{\n  filename: string;\n  data: Buffer;\n  warnings: Array\u003cError\u003e;\n  errors: Array\u003cError\u003e;\n  info: import(\"webpack\").AssetInfo;\n}\u003e \u0026 {\n  setup?: (() =\u003e void) | undefined;\n  teardown?: (() =\u003e void) | undefined;\n};\n```\n\nDefault: `undefined`\n\nConfigure the default `implementation`.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          // Implementation\n          implementation: ImageMinimizerPlugin.sharpMinify,\n          // Options\n          options: {\n            encodeOptions: {\n              jpeg: {\n                quality: 90,\n              },\n            },\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n##### `options`\n\nType:\n\n```ts\ntype options = {\n  [key: string]: any;\n};\n```\n\nDefault: `undefined`\n\nOptions for the `implementation` option (i.e. options for `imagemin`/`squoosh`/`sharp`/custom implementation).\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.sharpMinify,\n          // Options\n          options: {\n            encodeOptions: {\n              jpeg: {\n                quality: 90,\n              },\n            },\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n##### `filter`\n\nType:\n\n```ts\ntype filter = (source: Buffer, sourcePath: string) =\u003e boolean | undefined;\n```\n\nDefault: `() =\u003e true`\n\nAllows filtering of images for optimization/generation.\n\nReturn `true` to optimize the image, `false` otherwise.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          filter: (source, sourcePath) =\u003e {\n            // The `source` argument is a `Buffer` of source file\n            // The `sourcePath` argument is an absolute path to source\n            if (source.byteLength \u003c 8192) {\n              return false;\n            }\n\n            return true;\n          },\n          implementation: ImageMinimizerPlugin.imageminMinify,\n          options: {\n            plugins: [\n              \"imagemin-gifsicle\",\n              \"imagemin-mozjpeg\",\n              \"imagemin-pngquant\",\n              \"imagemin-svgo\",\n            ],\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n##### `filename`\n\nType:\n\n```ts\ntype filename =\n  | string\n  | ((\n      pathData: {\n        filename?: string | undefined;\n      },\n      assetInfo?: import(\"webpack\").AssetInfo | undefined,\n    ) =\u003e string)\n  | undefined;\n```\n\nDefault: `undefined`\n\nAllows to set the filename.\nSupported values see in [`webpack template strings`](https://webpack.js.org/configuration/output/#template-strings), `File-level` section.\n\nWe also support `[width]` and `[height]` placeholders (only `sharp` and `squoosh`).\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          filename: \"optimized-[name][ext]\",\n          implementation: ImageMinimizerPlugin.sharpMinify,\n          // Options\n          options: {\n            encodeOptions: {\n              jpeg: {\n                quality: 90,\n              },\n            },\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\nExample `function` usage:\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          filename: () =\u003e \"optimized-[name][ext]\",\n          implementation: ImageMinimizerPlugin.sharpMinify,\n          // Options\n          options: {\n            encodeOptions: {\n              jpeg: {\n                quality: 90,\n              },\n            },\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n### `generator`\n\nType:\n\n```ts\ntype generator = Array\u003c{\n  implementation: (\n    original: {\n      filename: string;\n      data: Buffer;\n      warnings: Array\u003cError\u003e;\n      errors: Array\u003cError\u003e;\n      info: import(\"webpack\").AssetInfo;\n    },\n    options?:\n      | {\n          [key: string]: any;\n        }\n      | undefined,\n  ) =\u003e Promise\u003c{\n    filename: string;\n    data: Buffer;\n    warnings: Array\u003cError\u003e;\n    errors: Array\u003cError\u003e;\n    info: import(\"webpack\").AssetInfo;\n  }\u003e \u0026 {\n    setup?: (() =\u003e void) | undefined;\n    teardown?: (() =\u003e void) | undefined;\n  };\n  options?:\n    | {\n        [key: string]: any;\n      }\n    | undefined;\n  filter?: (source: Buffer, sourcePath: string) =\u003e boolean | undefined;\n  filename?:\n    | string\n    | ((\n        pathData: {\n          filename?: string | undefined;\n        },\n        assetInfo?: import(\"webpack\").AssetInfo | undefined,\n      ) =\u003e string)\n    | undefined;\n  preset?: string | undefined;\n  type?: \"import\" | \"asset\" | undefined;\n}\u003e;\n```\n\nDefault: `undefined`\n\nAllow to setup default generators.\nUseful if you need generate `webp`/`avif`/etc from other formats.\n\n\u003e [!WARNING]\n\u003e\n\u003e If no generator was found for the image (i.e. no `?as=webp` was found in query params), the `minimizer` option will be used. Therefore, it is recommended to configure generator outputs optimized image.\n\n\u003e [!WARNING]\n\u003e\n\u003e The option will not work if you disable `loader` (i.e. set the `loader` option to `false`).\n\n#### Available generators\n\n- `ImageMinimizerPlugin.imageminGenerate`\n- **DEPRECATED** `ImageMinimizerPlugin.squooshGenerate`\n- `ImageMinimizerPlugin.sharpGenerate`\n\n#### Generator example for `imagemin`\n\nExample `webp` generator:\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        generator: [\n          {\n            // You can apply generator using `?as=webp`, you can use any name and provide more options\n            preset: \"webp\",\n            implementation: ImageMinimizerPlugin.imageminGenerate,\n            options: {\n              // Please specify only one plugin here, multiple plugins will not work\n              plugins: [\"imagemin-webp\"],\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\n#### **DEPRECATED** Generator example for `squoosh`\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        generator: [\n          {\n            // You can apply generator using `?as=webp`, you can use any name and provide more options\n            preset: \"webp\",\n            implementation: ImageMinimizerPlugin.squooshGenerate,\n            options: {\n              encodeOptions: {\n                // Please specify only one codec here, multiple codecs will not work\n                webp: {\n                  quality: 90,\n                },\n              },\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\n#### Generator example for `sharp`\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        generator: [\n          {\n            // You can apply generator using `?as=webp`, you can use any name and provide more options\n            preset: \"webp\",\n            implementation: ImageMinimizerPlugin.sharpGenerate,\n            options: {\n              encodeOptions: {\n                // Please specify only one codec here, multiple codecs will not work\n                webp: {\n                  quality: 90,\n                },\n              },\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\nNow you can generate the new image using:\n\n```js\n// Old approach for getting URL\nimport webp from \"./file.jpg?as=webp\";\n\n// Assets modules\nconsole.log(new URL(\"./file.jpg?as=webp\"));\n```\n\n```css\ndiv {\n  background: url(\"./file.jpg?as=webp\");\n}\n```\n\nYou can use `?as=webp` in any type of files.\n\nExample multiple generators:\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        generator: [\n          {\n            // You can apply generator using `?as=webp`, you can use any name and provide more options\n            preset: \"webp\",\n            implementation: ImageMinimizerPlugin.sharpGenerate,\n            options: {\n              encodeOptions: {\n                webp: {\n                  lossless: false,\n                },\n              },\n            },\n          },\n          {\n            // You can apply generator using `?as=avif`, you can use any name and provide more options\n            preset: \"avif\",\n            implementation: ImageMinimizerPlugin.sharpGenerate,\n            options: {\n              encodeOptions: {\n                avif: {\n                  lossless: false,\n                },\n              },\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\n`squoosh` and `sharp` generator supports more options, for example you can resize an image:\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        generator: [\n          {\n            // You can apply generator using `?as=webp-100-50`, you can use any name and provide more options\n            preset: \"webp-100-50\",\n            // implementation: ImageMinimizerPlugin.squooshGenerate,\n            implementation: ImageMinimizerPlugin.sharpGenerate,\n            options: {\n              resize: {\n                enabled: true,\n                width: 100,\n                height: 50,\n              },\n              encodeOptions: {\n                webp: {\n                  quality: 90,\n                },\n              },\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\nYou can find more information [here](https://github.com/GoogleChromeLabs/squoosh/tree/dev/libsquoosh).\n\nFor only `sharp` currently, you can even generate the non-retina resizes of images:\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        generator: [\n          {\n            // You can apply generator using `?as=webp-1x`, you can use any name and provide more options\n            preset: \"webp-1x\",\n            implementation: ImageMinimizerPlugin.sharpGenerate,\n            options: {\n              resize: {\n                enabled: true,\n                width: 50,\n                unit: \"percent\",\n              },\n              encodeOptions: {\n                webp: {\n                  quality: 90,\n                },\n              },\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\n#### Generator example for user defined implementation\n\nYou can use your own generator implementation.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        generator: [\n          {\n            // You can apply generator using `?as=webp`, you can use any name and provide more options\n            preset: \"webp\",\n            implementation: async (original, options) =\u003e {\n              const inputExt = path.extname(original.filename).toLowerCase();\n\n              if (inputExt !== \".xxx\") {\n                // Store error and return `null` if the implementation does not support this file type\n                original.errors.push(error);\n                return null;\n              }\n\n              let result;\n\n              try {\n                result = await minifyAndReturnBuffer(original.data);\n              } catch (error) {\n                // Store error and return `null` if there was an error\n                original.errors.push(error);\n                return null;\n              }\n\n              return {\n                filename: original.filename,\n                data: result,\n                warnings: [...original.warnings],\n                errors: [...original.errors],\n                info: {\n                  ...original.info,\n                  // Please always set it to prevent double minification\n                  generated: true,\n                  // Optional\n                  generatedBy: [\"custom-name-of-minification\"],\n                },\n              };\n            },\n            options: {\n              // Your options\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\n#### Generator options\n\n##### `type`\n\nType:\n\n```ts\ntype type = \"import\" | \"asset\" | undefined;\n```\n\nDefault: `\"import\"`\n\nAllows you to apply the generator for `import` or assets from compilation (useful for copied assets).\nBy default, generators are applying on `import`/`require`, but sometimes you need to generate new images from other plugins (for example - `copy-webpack-plugin`), if you need this, please set `asset` value for the `type` option.\n\n**webpack.config.js**\n\n```js\nconst CopyPlugin = require(\"copy-webpack-plugin\");\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.imageminMinify,\n          options: {\n            plugins: [\n              \"imagemin-gifsicle\",\n              \"imagemin-mozjpeg\",\n              \"imagemin-pngquant\",\n              \"imagemin-svgo\",\n            ],\n          },\n        },\n        generator: [\n          {\n            // Apply generator for copied assets\n            type: \"asset\",\n            // You can use `ImageMinimizerPlugin.squooshGenerate`\n            // You can use `ImageMinimizerPlugin.sharpGenerate`\n            implementation: ImageMinimizerPlugin.imageminGenerate,\n            options: {\n              plugins: [\"imagemin-webp\"],\n            },\n          },\n        ],\n      }),\n    ],\n  },\n  plugins: [new CopyPlugin({ patterns: [\"images/**/*.png\"] })],\n};\n```\n\n##### `preset`\n\nType:\n\n```ts\ntype preset = string | undefined;\n```\n\nDefault: `undefined`\n\nConfigure the name of preset, i.e. you can use it in `?as=name`.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        generator: [\n          {\n            preset: \"name\",\n            // Implementation\n            implementation: ImageMinimizerPlugin.sharpMinify,\n            options: {\n              encodeOptions: {\n                jpeg: {\n                  quality: 85,\n                },\n              },\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\n##### `implementation`\n\nType:\n\n```ts\ntype implementation = (\n  original: {\n    filename: string;\n    data: Buffer;\n    warnings: Array\u003cError\u003e;\n    errors: Array\u003cError\u003e;\n    info: import(\"webpack\").AssetInfo;\n  },\n  options?:\n    | {\n        [key: string]: any;\n      }\n    | undefined,\n) =\u003e Promise\u003c{\n  filename: string;\n  data: Buffer;\n  warnings: Array\u003cError\u003e;\n  errors: Array\u003cError\u003e;\n  info: import(\"webpack\").AssetInfo;\n}\u003e \u0026 {\n  setup?: (() =\u003e void) | undefined;\n  teardown?: (() =\u003e void) | undefined;\n};\n```\n\nDefault: `undefined`\n\nConfigure the default `implementation`.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        generator: [\n          {\n            preset: \"name\",\n            // Implementation\n            implementation: ImageMinimizerPlugin.sharpMinify,\n            options: {\n              encodeOptions: {\n                jpeg: {\n                  quality: 85,\n                },\n              },\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\n##### `options`\n\nType:\n\n```ts\ntype options = {\n  [key: string]: any;\n};\n```\n\nDefault: `undefined`\n\nOptions for the `implementation` option (i.e. options for `imagemin`/`squoosh`/`sharp`/custom implementation).\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        generator: [\n          {\n            preset: \"name\",\n            implementation: ImageMinimizerPlugin.sharpMinify,\n            // Options\n            options: {\n              encodeOptions: {\n                jpeg: {\n                  quality: 90,\n                },\n              },\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\n##### `filter`\n\nType:\n\n```ts\ntype filter = (source: Buffer, sourcePath: string) =\u003e boolean;\n```\n\nDefault: `() =\u003e true`\n\nAllows filtering of images for optimization/generation.\n\nReturn `true` to optimize the image, `false` otherwise.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        generator: [\n          {\n            preset: \"name\",\n            filter: (source, sourcePath) =\u003e {\n              // The `source` argument is a `Buffer` of source file\n              // The `sourcePath` argument is an absolute path to source\n              if (source.byteLength \u003c 8192) {\n                return false;\n              }\n\n              return true;\n            },\n            implementation: ImageMinimizerPlugin.imageminMinify,\n            options: {\n              plugins: [\n                \"imagemin-gifsicle\",\n                \"imagemin-mozjpeg\",\n                \"imagemin-pngquant\",\n                \"imagemin-svgo\",\n              ],\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\n##### `filename`\n\nType:\n\n```ts\ntype filename =\n  | string\n  | ((\n      pathData: PathData,\n      assetInfo?: import(\"webpack\").AssetInfo | undefined,\n    ) =\u003e string);\n```\n\nDefault: `undefined`\n\nAllows to set the filename.\nSupported values see in [`webpack template strings`](https://webpack.js.org/configuration/output/#template-strings), `File-level` section.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        generator: [\n          {\n            preset: \"name\",\n            filename: \"generated-[name][ext]\",\n            implementation: ImageMinimizerPlugin.sharpMinify,\n            // Options\n            options: {\n              encodeOptions: {\n                jpeg: {\n                  quality: 90,\n                },\n              },\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\nExample of `function` usage:\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        generator: [\n          {\n            preset: \"name\",\n            filename: () =\u003e \"generated-[name][ext]\",\n            implementation: ImageMinimizerPlugin.sharpMinify,\n            // Options\n            options: {\n              encodeOptions: {\n                jpeg: {\n                  quality: 90,\n                },\n              },\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\n### `severityError`\n\nType:\n\n```ts\ntype severityError = string;\n```\n\nDefault: `'error'`\n\nAllows to choose how errors are displayed.\n\nСan have the following values:\n\n- `'off'` - suppresses errors and warnings\n- `'warning'` - emit warnings instead errors\n- `'error'` - emit errors\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        severityError: \"warning\",\n        minimizer: {\n          implementation: ImageMinimizerPlugin.imageminMinify,\n          options: {\n            plugins: [\n              \"imagemin-gifsicle\",\n              \"imagemin-mozjpeg\",\n              \"imagemin-pngquant\",\n              \"imagemin-svgo\",\n            ],\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n### `loader`\n\nType:\n\n```ts\ntype loader = boolean;\n```\n\nDefault: `true`\n\nAutomatically adding built-in `loader`, used to optimize/generate images.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        loader: false,\n        // `generator` will not work in this case\n        minimizer: {\n          implementation: ImageMinimizerPlugin.imageminMinify,\n          options: {\n            plugins: [\n              \"imagemin-gifsicle\",\n              \"imagemin-mozjpeg\",\n              \"imagemin-pngquant\",\n              \"imagemin-svgo\",\n            ],\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n### `concurrency`\n\nType:\n\n```ts\ntype concurrency = number;\n```\n\nDefault: `Math.max(1, os.cpus().length - 1)`\n\nMaximum number of concurrency optimization processes in one time.\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        concurrency: 3,\n        minimizer: {\n          implementation: ImageMinimizerPlugin.imageminMinify,\n          options: {\n            plugins: [\n              \"imagemin-gifsicle\",\n              \"imagemin-mozjpeg\",\n              \"imagemin-pngquant\",\n              \"imagemin-svgo\",\n            ],\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n### `deleteOriginalAssets`\n\nType:\n\n```ts\ntype deleteOriginalAssets = boolean;\n```\n\nDefault: `true`\n\nAllows removing original assets after optimization.\n\n**Please use this option if you are set the `filename` option for the `minimizer` option, disable `loader: false` and want to keep optimized and not optimized assets.**\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        // Disable loader\n        loader: false,\n        // Allows to keep original asset and minimized assets with different filenames\n        deleteOriginalAssets: false,\n        minimizer: {\n          filename: \"[path][name].webp\",\n          implementation: ImageMinimizerPlugin.imageminMinify,\n          options: {\n            plugins: [\n              \"imagemin-gifsicle\",\n              \"imagemin-mozjpeg\",\n              \"imagemin-pngquant\",\n              \"imagemin-svgo\",\n            ],\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n## Loader Options\n\n- **[`minimizer`](#minimizer-1)**\n- **[`generator`](#generator-1)**\n- **[`severityError`](severityerror-1)**\n\n### `minimizer`\n\nType:\n\n```ts\ntype minimizer =\n  | {\n      implementation: (\n        original: {\n          filename: string;\n          data: Buffer;\n          warnings: Array\u003cError\u003e;\n          errors: Array\u003cError\u003e;\n          info: import(\"webpack\").AssetInfo;\n        },\n        options?:\n          | {\n              [key: string]: any;\n            }\n          | undefined,\n      ) =\u003e Promise\u003c{\n        filename: string;\n        data: Buffer;\n        warnings: Array\u003cError\u003e;\n        errors: Array\u003cError\u003e;\n        info: import(\"webpack\").AssetInfo;\n      }\u003e \u0026 {\n        setup?: (() =\u003e void) | undefined;\n        teardown?: (() =\u003e void) | undefined;\n      };\n      options?:\n        | {\n            [key: string]: any;\n          }\n        | undefined;\n      filter?: (source: Buffer, sourcePath: string) =\u003e boolean | undefined;\n      filename?:\n        | string\n        | ((\n            pathData: {\n              filename?: string | undefined;\n            },\n            assetInfo?: import(\"webpack\").AssetInfo | undefined,\n          ) =\u003e string)\n        | undefined;\n    }\n  | Array\u003c{\n      implementation: (\n        original: {\n          filename: string;\n          data: Buffer;\n          warnings: Array\u003cError\u003e;\n          errors: Array\u003cError\u003e;\n          info: import(\"webpack\").AssetInfo;\n        },\n        options?:\n          | {\n              [key: string]: any;\n            }\n          | undefined,\n      ) =\u003e Promise\u003c{\n        filename: string;\n        data: Buffer;\n        warnings: Array\u003cError\u003e;\n        errors: Array\u003cError\u003e;\n        info: import(\"webpack\").AssetInfo;\n      }\u003e \u0026 {\n        setup?: (() =\u003e void) | undefined;\n        teardown?: (() =\u003e void) | undefined;\n      };\n      options?:\n        | {\n            [key: string]: any;\n          }\n        | undefined;\n      filter?: (source: Buffer, sourcePath: string) =\u003e boolean | undefined;\n      filename?:\n        | string\n        | ((\n            pathData: {\n              filename?: string | undefined;\n            },\n            assetInfo?: import(\"webpack\").AssetInfo | undefined,\n          ) =\u003e string)\n        | undefined;\n    }\u003e;\n```\n\nDefault: `undefined`\n\nAllows to setup default minimizer.\n\n#### Loader minimizer example for `imagemin`\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  module: {\n    rules: [\n      {\n        test: /\\.(jpe?g|png|gif|svg)$/i,\n        type: \"asset\",\n      },\n      {\n        test: /\\.(jpe?g|png|gif|svg)$/i,\n        loader: ImageMinimizerPlugin.loader,\n        enforce: \"pre\",\n        options: {\n          minimizer: {\n            implementation: ImageMinimizerPlugin.imageminMinify,\n            options: {\n              plugins: [\n                \"imagemin-gifsicle\",\n                \"imagemin-mozjpeg\",\n                \"imagemin-pngquant\",\n                \"imagemin-svgo\",\n              ],\n            },\n          },\n        },\n      },\n    ],\n  },\n};\n```\n\nFor more information and supported options please read [here](#minimizer).\n\n### `generator`\n\nType:\n\n```ts\ntype generator = Array\u003c{\n  implementation: TransformerFunction\u003cT\u003e;\n  options?: BasicTransformerOptions\u003cT\u003e;\n  filter?: FilterFn | undefined;\n  filename?: string | FilenameFn | undefined;\n  preset?: string | undefined;\n  type?: \"import\" | \"asset\" | undefined;\n}\u003e;\n```\n\nDefault: `undefined`\n\nAllow to setup default generators.\nUseful if you need generate `webp`/`avif`/etc from other formats.\n\n#### Loader generator example for `imagemin`\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  module: {\n    rules: [\n      {\n        test: /\\.(jpe?g|png|gif|svg)$/i,\n        type: \"asset\",\n      },\n      {\n        test: /\\.(jpe?g|png|gif|svg)$/i,\n        loader: ImageMinimizerPlugin.loader,\n        enforce: \"pre\",\n        options: {\n          generator: [\n            {\n              preset: \"webp\",\n              implementation: ImageMinimizerPlugin.imageminGenerate,\n              options: {\n                plugins: [\"imagemin-webp\"],\n              },\n            },\n          ],\n        },\n      },\n    ],\n  },\n};\n```\n\nFor more information and supported options please read [here](#generator).\n\n### `severityError`\n\nType:\n\n```ts\ntype severityError = string;\n```\n\nDefault: `'error'`\n\nAllows to choose how errors are displayed.\n\nСan have the following values:\n\n- `'off'` - suppresses errors and warnings\n- `'warning'` - emit warnings instead errors\n- `'error'` - emit errors\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  module: {\n    rules: [\n      {\n        test: /\\.(jpe?g|png|gif|svg)$/i,\n        type: \"asset\",\n      },\n      {\n        test: /\\.(jpe?g|png|gif|svg)$/i,\n        use: [\n          {\n            loader: ImageMinimizerPlugin.loader,\n            options: {\n              severityError: \"warning\",\n              minimizerOptions: {\n                plugins: [\"gifsicle\"],\n              },\n            },\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n## Additional API\n\n### `imageminNormalizeConfig(config)`\n\nThe function normalizes configuration (converts plugins names and options to `Function`s) for using in `imagemin` package directly.\n\n```js\nconst imagemin = require(\"imagemin\");\nconst { imageminNormalizeConfig } = require(\"image-minimizer-webpack-plugin\");\n\n/*\n  console.log(imageminConfig);\n  =\u003e\n  {\n    plugins: [Function, Function],\n    pluginsMeta: [\n      { name: \"imagemin-jpegtran\", version: \"x.x.x\", options: {} },\n      { name: \"imagemin-pngquant\", version: \"x.x.x\", options: { quality: [0.6, 0.8] }\n    ]\n  }\n*/\n\n(async () =\u003e {\n  const imageminConfig = await imageminNormalizeConfig({\n    plugins: [\"jpegtran\", [\"pngquant\", { quality: [0.6, 0.8] }]],\n  });\n  const files = await imagemin([\"images/*.{jpg,png}\"], {\n    destination: \"build/images\",\n    plugins: imageminConfig.plugins,\n  });\n\n  console.log(files);\n  // =\u003e [{data: \u003cBuffer 89 50 4e …\u003e, path: 'build/images/foo.jpg'}, …]\n})();\n```\n\n## Examples\n\n### Optimize images based on size\n\nYou can use difference options (like `progressive`/`interlaced`/etc.) based on image size (example - don't do progressive transformation for small images).\n\nWhat is `progressive` image? [`Answer here`](https://jmperezperez.com/medium-image-progressive-loading-placeholder/).\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.imageminMinify,\n          options: {\n            plugins: [[\"jpegtran\", { progressive: true }]],\n          },\n          // Only apply this one to files equal to or over 8192 bytes\n          filter: (source) =\u003e {\n            if (source.byteLength \u003e= 8192) {\n              return true;\n            }\n\n            return false;\n          },\n        },\n      }),\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.imageminMinify,\n          options: {\n            plugins: [[\"jpegtran\", { progressive: false }]],\n          },\n          // Only apply this one to files under 8192\n          filter: (source) =\u003e {\n            if (source.byteLength \u003c 8192) {\n              return true;\n            }\n\n            return false;\n          },\n        },\n      }),\n    ],\n  },\n};\n```\n\n### Optimize and generate `webp` images\n\n- imagemin\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.imageminMinify,\n          options: {\n            plugins: [\n              \"imagemin-gifsicle\",\n              \"imagemin-mozjpeg\",\n              \"imagemin-pngquant\",\n              \"imagemin-svgo\",\n            ],\n          },\n        },\n        generator: [\n          {\n            // You can apply generator using `?as=webp`, you can use any name and provide more options\n            preset: \"webp\",\n            implementation: ImageMinimizerPlugin.imageminGenerate,\n            options: {\n              plugins: [\"imagemin-webp\"],\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\n- **DEPRECATED** squoosh\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.squooshMinify,\n        },\n        generator: [\n          {\n            // You can apply generator using `?as=webp`, you can use any name and provide more options\n            preset: \"webp\",\n            implementation: ImageMinimizerPlugin.squooshGenerate,\n            options: {\n              encodeOptions: {\n                webp: {\n                  quality: 90,\n                },\n              },\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\n- sharp\n\n**webpack.config.js**\n\n```js\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.sharpMinify,\n        },\n        generator: [\n          {\n            // You can apply generator using `?as=webp`, you can use any name and provide more options\n            preset: \"webp\",\n            implementation: ImageMinimizerPlugin.sharpGenerate,\n            options: {\n              encodeOptions: {\n                webp: {\n                  quality: 90,\n                },\n              },\n            },\n          },\n        ],\n      }),\n    ],\n  },\n};\n```\n\n### Generate `webp` images from copied assets\n\n- imagemin\n\n**webpack.config.js**\n\n```js\nconst CopyPlugin = require(\"copy-webpack-plugin\");\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.imageminMinify,\n          options: {\n            plugins: [\n              \"imagemin-gifsicle\",\n              \"imagemin-mozjpeg\",\n              \"imagemin-pngquant\",\n              \"imagemin-svgo\",\n            ],\n          },\n        },\n        generator: [\n          {\n            type: \"asset\",\n            implementation: ImageMinimizerPlugin.imageminGenerate,\n            options: {\n              plugins: [\"imagemin-webp\"],\n            },\n          },\n        ],\n      }),\n    ],\n  },\n  plugins: [new CopyPlugin({ patterns: [\"images/**/*.png\"] })],\n};\n```\n\n- **DEPRECATED** squoosh\n\n**webpack.config.js**\n\n```js\nconst CopyPlugin = require(\"copy-webpack-plugin\");\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.squooshMinify,\n        },\n        generator: [\n          {\n            type: \"asset\",\n            implementation: ImageMinimizerPlugin.squooshGenerate,\n            options: {\n              encodeOptions: {\n                webp: {\n                  quality: 90,\n                },\n              },\n            },\n          },\n        ],\n      }),\n    ],\n  },\n  plugins: [new CopyPlugin({ patterns: [\"images/**/*.png\"] })],\n};\n```\n\n- sharp\n\n**webpack.config.js**\n\n```js\nconst CopyPlugin = require(\"copy-webpack-plugin\");\nconst ImageMinimizerPlugin = require(\"image-minimizer-webpack-plugin\");\n\nmodule.exports = {\n  optimization: {\n    minimizer: [\n      \"...\",\n      new ImageMinimizerPlugin({\n        minimizer: {\n          implementation: ImageMinimizerPlugin.sharpMinify,\n        },\n        generator: [\n          {\n            type: \"asset\",\n            implementation: ImageMinimizerPlugin.sharpGenerate,\n            options: {\n              encodeOptions: {\n                webp: {\n                  quality: 90,\n                },\n              },\n            },\n          },\n        ],\n      }),\n    ],\n  },\n  plugins: [new CopyPlugin({ patterns: [\"images/**/*.png\"] })],\n};\n```\n\n## Contributing\n\nPlease take a moment to read our contributing guidelines if you haven't yet done so.\n\n[CONTRIBUTING](./.github/CONTRIBUTING.md)\n\n## License\n\n[MIT](./LICENSE)\n\n[npm]: https://img.shields.io/npm/v/image-minimizer-webpack-plugin.svg\n[npm-url]: https://npmjs.com/package/image-minimizer-webpack-plugin\n[node]: https://img.shields.io/node/v/image-minimizer-webpack-plugin.svg\n[node-url]: https://nodejs.org\n[tests]: https://github.com/webpack-contrib/image-minimizer-webpack-plugin/workflows/image-minimizer-webpack-plugin/badge.svg\n[tests-url]: https://github.com/webpack-contrib/image-minimizer-webpack-plugin/actions\n[cover]: https://codecov.io/gh/webpack-contrib/image-minimizer-webpack-plugin/branch/master/graph/badge.svg\n[cover-url]: https://codecov.io/gh/webpack-contrib/image-minimizer-webpack-plugin\n[discussion]: https://img.shields.io/github/discussions/webpack/webpack\n[discussion-url]: https://github.com/webpack/webpack/discussions\n[size]: https://packagephobia.now.sh/badge?p=image-minimizer-webpack-plugin\n[size-url]: https://packagephobia.now.sh/result?p=image-minimizer-webpack-plugin\n","funding_links":["https://opencollective.com/webpack"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebpack-contrib%2Fimage-minimizer-webpack-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebpack-contrib%2Fimage-minimizer-webpack-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebpack-contrib%2Fimage-minimizer-webpack-plugin/lists"}