A Vite plugin for importing SVG files as SVG sprite symbols or components.
You can install the plugin using npm, pnpm, or yarn:
npm install vite-plugin-svg-sprite --save-dev
# or
pnpm add vite-plugin-svg-sprite --save-dev
# or
yarn add vite-plugin-svg-sprite --dev
To use the plugin, import and configure it in your Vite configuration file (vite.config.js|ts
):
import createSvgSpritePlugin from 'vite-plugin-svg-sprite';
const config = {
plugins: [
createSvgSpritePlugin({
exportType: 'vanilla', // or 'react' or 'vue'
include: '**/icons/*.svg'
}),
],
}
For React projects, set the exportType
to 'react'
to import SVGs as components:
import IconFoo from './icons/foo.svg';
<IconFoo />
This may seem similar to svgr
but internally they are different.
vite-plugin-svg-sprite
usually has a better render performance.
For Vue projects, set the exportType
to 'vue'
to import SVGs as components:
import IconFoo from './icons/foo.svg';
<IconFoo />
For users not using React or Vue, set the exportType
to 'vanilla'
. The imported value will be the symbolId
, which can be used with SVG <use>
:
import IconFoo from './icons/foo.svg';
const html = `
<svg>
<use xlink:href="#${IconFoo}" />
</svg>
`;
To get proper type hints in TypeScript, include the appropriate type definitions in your tsconfig.json
:
"types": [
// or "vite-plugin-svg-sprite/typings/react" | "vite-plugin-svg-sprite/typings/vue"
"vite-plugin-svg-sprite/typings/vanilla"
],
-
symbolId: (
string
, optional) Controls the generated symbol ID. Default is'icon-[name]'
. -
exportType: (
'vanilla' | 'react' | 'vue'
, optional) Determines the type of the exported value. Default is'vanilla'
.- If set to
'vanilla'
, the value will be thesymbolId
. - If set to
'react'
, the value will be a React component. - If set to
'vue'
, the value will be a Vue component.
- If set to
-
svgo: (object, optional) Configuration for SVGO, refer to the SVGO documentation for details.
-
include: (string | string[], optional) Paths to match SVG files that should be processed. Default is
'**/icons/*.svg'
, following micromatch rules.