Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sirsayed98/simple-svg-sprite
A Webpack plugin that generates a SVG sprite
https://github.com/sirsayed98/simple-svg-sprite
images loaders optimization performance plugins sprite-map sprites svg svg-icons webpack
Last synced: 7 days ago
JSON representation
A Webpack plugin that generates a SVG sprite
- Host: GitHub
- URL: https://github.com/sirsayed98/simple-svg-sprite
- Owner: sirSayed98
- Created: 2024-09-17T08:14:04.000Z (16 days ago)
- Default Branch: main
- Last Pushed: 2024-09-18T17:49:17.000Z (15 days ago)
- Last Synced: 2024-09-26T02:45:44.487Z (7 days ago)
- Topics: images, loaders, optimization, performance, plugins, sprite-map, sprites, svg, svg-icons, webpack
- Language: JavaScript
- Homepage:
- Size: 4.88 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# simple-svg-sprite
A Webpack plugin for creating an SVG sprite from individual SVG files.
## Table of Contents
- [Installation](#installation)
- [Usage](#usage)
- [Options](#options)
- [Change reference](#change-reference)
---## Installation
Install `simple-svg-sprite` using npm or yarn as a dev dependency:
```console
npm install --save-dev simple-svg-sprite
```
OR
```console
yarn add --dev simple-svg-sprite
```
## UsageHere's how to use the plugin in your Webpack configuration:
```console
// import package
const { SimpleSVGSprite, GenerateSVGContentHash } = require('simple-svg-sprite');
const svgContentHash = GenerateSVGContentHash('path/to/svgs/folder')module.exports = {
// ... other webpack config
plugins: [
new SimpleSVGSprite({
svgFolderPath: 'path/to/svgs/folder',
spriteOutput: spritemap.${svgContentHash}.svg,
}),
]
};
```## Options
| Option | Required | Description | Default
|--------|----------|-------------|---------
| `svgFolderPath` | **Yes** | The path to SVG images folder | -
| `spriteOutput` | **NO** | The output sprite name | `"spritemap.svg"`
| `prefix` | **NO** | Prefix to each symbol ID | `"shape-"`
| `svgoOptions` |**NO** | Custom optimization using SVGO library | `{}`## Change reference
we need to convert reference from your code to sprite refrence
example:
```console
// your code
// to
```
- You don't need to update your code base to this format , you can use [Mutation observer](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver) to do that `OR` use custom loader:```console
// add this rule to your loaders
{
test: /\.(js|html)$/,
exclude: [/node_modules/],
use: {
loader: path.resolve(__dirname, './custom-loaders/EditSvgHrefLoader'),
options: {
svgFileName: `spritemap.${svgContentHash}.svg`,
prefix: 'shape-',
},
},
},// create EditSvgHrefLoader.js file in custom-loaders folder
custom-loaders/EditSvgHrefLoader.jsconst loaderUtils = require('loader-utils');
module.exports = function (source) {
const { svgFileName, prefix } = loaderUtils.getOptions(this);const modifiedSource = source.replace(
new RegExp(`#${prefix}`, 'g'),
`${svgFileName}#${prefix}`
);return modifiedSource;
};
```