From f06956efd2dc4bf77244a9fcce2b883a00b925af Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Thu, 21 Dec 2023 22:46:53 +0800 Subject: updated node modules --- node_modules/svgo/README.md | 279 ++++++++++++++++---------------------------- 1 file changed, 103 insertions(+), 176 deletions(-) (limited to 'node_modules/svgo/README.md') diff --git a/node_modules/svgo/README.md b/node_modules/svgo/README.md index d7bfb06d..1ac3d59c 100644 --- a/node_modules/svgo/README.md +++ b/node_modules/svgo/README.md @@ -1,72 +1,83 @@
- SVGO logo +
-## SVGO [![npm version](https://img.shields.io/npm/v/svgo)](https://npmjs.org/package/svgo) [![Discord](https://img.shields.io/discord/815166721315831868)](https://discord.gg/z8jX8NYxrE) +# SVGO [![npm](https://img.shields.io/npm/v/svgo)](https://npmjs.org/package/svgo) [![chat](https://img.shields.io/discord/815166721315831868)](https://discord.gg/z8jX8NYxrE) [![docs](https://img.shields.io/badge/docs-svgo.dev-blue)](https://svgo.dev/) -**SVG O**ptimizer is a Node.js-based tool for optimizing SVG vector graphics files. +SVGO, short for **SVG O**ptimizer, is a Node.js library and command-line application for optimizing SVG files. ## Why? -SVG files, especially those exported from various editors, usually contain a lot of redundant and useless information. This can include editor metadata, comments, hidden elements, default or non-optimal values and other stuff that can be safely removed or converted without affecting the SVG rendering result. +SVG files, especially those exported from vector editors, usually contain a lot of redundant information. This includes editor metadata, comments, hidden elements, default or suboptimal values, and other stuff that can be safely removed or converted without impacting rendering. ## Installation +You can install SVGO globally through npm, yarn, or pnpm. Alternatively, drop the global flag (`global`/`-g`) to use it in your Node.js project. + ```sh -# Via npm -npm -g install svgo -# Via yarn +# npm +npm install -g svgo + +# yarn yarn global add svgo + +# pnpm +pnpm add -g svgo ``` -## CLI usage +## Command-line usage + +Process single files: ```sh -# Processing single files: svgo one.svg two.svg -o one.min.svg two.min.svg -# Processing directory of svg files, recursively using `-f`, `--folder` : -svgo -f ./path/to/folder/with/svg/files -o ./path/to/folder/with/svg/output -# Help for advanced usage +``` +Process a directory of files recursively with `-f`/`--folder`: + +```sh +svgo -f path/to/directory_with_svgs -o path/to/output_directory +``` + +Help for advanced usage: + +```sh svgo --help ``` ## Configuration -SVGO has a plugin-based architecture, separate plugins allows various xml svg optimizations. See [built-in plugins](#built-in-plugins). -SVGO automatically loads configuration from `svgo.config.js` or from `--config ./path/myconfig.js`. Some general options can be configured via CLI. +SVGO has a plugin architecture. You can read more about all plugins in [Plugins | SVGO Documentation](https://svgo.dev/docs/plugins/), and the default plugins in [Preset Default | SVGO Documentation](https://svgo.dev/docs/preset-default/). +SVGO reads the configuration from `svgo.config.js` or the `--config path/to/config.js` command-line option. Some other parameters can be configured though command-line options too. + +**`svgo.config.js`** ```js -// svgo.config.js module.exports = { - multipass: true, // boolean. false by default - datauri: 'enc', // 'base64' (default), 'enc' or 'unenc'. + multipass: false, // boolean + datauri: 'base64', // 'base64'|'enc'|'unenc' js2svg: { - indent: 2, // string with spaces or number of spaces. 4 by default - pretty: true, // boolean, false by default + indent: 4, // number + pretty: false // boolean }, plugins: [ - // set of built-in plugins enabled by default - 'preset-default', - - // enable built-in plugins by name - 'prefixIds', + 'preset-default', // built-in plugins enabled by default + 'prefixIds', // enable built-in plugins by name - // or by expanded notation which allows to configure plugin + // enable built-in plugins with an object to configure plugins { - name: 'sortAttrs', + name: 'prefixIds', params: { - xmlnsOrder: 'alphabetical', - }, - }, - ], + prefix: 'uwu' + } + } + ] }; ``` - ### Default preset -When extending default configuration specify `preset-default` plugin to enable optimisations. -Each plugin of default preset can be disabled or configured with "overrides" param. +Instead of configuring SVGO from scratch, you can tweak the default preset to suit your needs by configuring or disabling the respective plugin. +**`svgo.config.js`** ```js module.exports = { plugins: [ @@ -74,74 +85,44 @@ module.exports = { name: 'preset-default', params: { overrides: { - // customize default plugin options + // disable a default plugin + removeViewBox: false, + + // customize the params of a default plugin inlineStyles: { onlyMatchedOnce: false, - }, - - // or disable plugins - removeDoctype: false, - }, - }, - }, - ], + } + } + } + } + ] }; ``` -Default preset includes the following list of plugins: - -- removeDoctype -- removeXMLProcInst -- removeComments -- removeMetadata -- removeEditorsNSData -- cleanupAttrs -- mergeStyles -- inlineStyles -- minifyStyles -- cleanupIds -- removeUselessDefs -- cleanupNumericValues -- convertColors -- removeUnknownsAndDefaults -- removeNonInheritableGroupAttrs -- removeUselessStrokeAndFill -- removeViewBox -- cleanupEnableBackground -- removeHiddenElems -- removeEmptyText -- convertShapeToPath -- convertEllipseToCircle -- moveElemsAttrsToGroup -- moveGroupAttrsToElems -- collapseGroups -- convertPathData -- convertTransform -- removeEmptyAttrs -- removeEmptyContainers -- mergePaths -- removeUnusedNS -- sortDefsChildren -- removeTitle -- removeDesc - -### Custom plugin - -It's also possible to specify a custom plugin: +You can find a list of the default plugins in the order they run in [Preset Default | SVGO Documentation](https://svgo.dev/docs/preset-default/#plugins-list). +### Custom plugins + +You can also specify custom plugins: + +**`svgo.config.js`** ```js -const anotherCustomPlugin = require('./another-custom-plugin.js'); +const importedPlugin = require('./imported-plugin'); + module.exports = { plugins: [ + // plugin imported from another JavaScript file + importedPlugin, + + // plugin defined inline { - name: 'customPluginName', + name: 'customPlugin', params: { - optionName: 'optionValue', + paramName: 'paramValue', }, - fn: (ast, params, info) => {}, - }, - anotherCustomPlugin, - ], + fn: (ast, params, info) => {} + } + ] }; ``` @@ -155,110 +136,56 @@ The core of SVGO is `optimize` function. ```js const { optimize } = require('svgo'); + const result = optimize(svgString, { - // optional but recommended field - path: 'path-to.svg', - // all config fields are also available here - multipass: true, + path: 'path-to.svg', // recommended + multipass: true // all other config fields are available here }); + const optimizedSvgString = result.data; ``` ### loadConfig -If you write a tool on top of SVGO you might need a way to load SVGO config. +If you write a tool on top of SVGO you may want to resolve the `svgo.config.js` file. ```js const { loadConfig } = require('svgo'); + const config = await loadConfig(); +``` + +You can also specify a path and customize the current working directory. -// you can also specify a relative or absolute path and customize the current working directory +```js const config = await loadConfig(configFile, cwd); ``` -## Built-in plugins - -| Plugin | Description | Default | -| ------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | -| [cleanupAttrs](https://github.com/svg/svgo/blob/main/plugins/cleanupAttrs.js) | cleanup attributes from newlines, trailing, and repeating spaces | `enabled` | -| [mergeStyles](https://github.com/svg/svgo/blob/main/plugins/mergeStyles.js) | merge multiple style elements into one | `enabled` | -| [inlineStyles](https://github.com/svg/svgo/blob/main/plugins/inlineStyles.js) | move and merge styles from `