vite-awesome-svg-loader
A universal Vite SVG loader. Imports SVGs as source code, base64 and data URI. Preserves stroke width. Replaces colors with currentColor or custom colors. Creates SVG sprites. Optimizes SVGs.
49,240
24
| Install | |
|---|---|
npm install vite-awesome-svg-loader |
|
| Latest Version: | 5.0.3 |
| License: | LGPL-2.1-or-later |
| Last Updated: | Aug 16, 2026 |
| Links: | GitHub · npm |
Maintainer: matafokka
vite-awesome-svg-loader
A framework-agnostic Vite plugin that:
- Can import SVGs as:
- Can improve performance of your website by using an alternative SVG loading method.
- Can preserve line width. Images will retain line width regardless of the size.
- Can replace colors with
currentColoror a custom color. - Will automatically minimize your SVGs using SVGO.
- Allows you to create SVG sprites using optional integrations.
A quick glance
Basic inline imports
Set import type in import query:
import image from "./image.svg?url";
import image from "./image.svg?source";
import image from "./image.svg?source-data-uri";
import image from "./image.svg?base64";
import image from "./image.svg?base64-data-uri";
Basic inline transformations
Apply transformations in import query:
import image from "./image.svg?preserve-line-width";
import image from "./image.svg?set-current-color";
import image from "./image.svg?skip-transforms";
import image from "./image.svg?skip-awesome-svg-loader";
Combined inline imports
Combine import type with multiple transformations:
import image from "./image.svg?url&preserve-line-width&set-current-color";
Configuration (recommended)
To avoid repeating import queries for each image, configure default transformations and use inline import queries only to override configuration:
// vite.config.ts
import { defineConfig } from "vite";
import { viteAwesomeSvgLoader } from "vite-awesome-svg-loader";
export default defineConfig({
plugins: [
viteAwesomeSvgLoader({
preserveLineWidthList: [/preserve-line-width\//, /all\//],
replaceColorsList: [/set-current-color\//, /all\//],
urlImportsInLibraryMode: "emit-files",
}),
],
});
SVG symbols
This is how to display SVG images and icons with SVG symbols:
import image from "./image.svg";
import icon from "./image.svg";
import { SvgImage, SvgIcon } from "vite-awesome-svg-loader/react-integration";
export default function App() {
return (
<Fragment>
<SvgImage src={image} />
<SvgIcon src={icon} size="48px" color="red" />
<Fragment>
)
}
<template>
<SvgImage :src="image" />
<SvgIcon :src="icon" size="48px" color="red" />
</template>
<script lang="ts" setup>
import image from "./image.svg";
import icon from "./image.svg";
import { SvgImage, SvgIcon } from "vite-awesome-svg-loader/vue-integration";
</script>
import image from "./image.svg";
import icon from "./image.svg";
import esc from "escape-html";
import { SvgImage, SvgIcon } from "vite-awesome-svg-loader/web-components-integration";
SvgImage.define();
SvgIcon.define();
document.getElementById("app")!.innerHTML += `
<svg-image src="${esc(image)}"></svg-image>
<svg-icon src="${esc(icon)}" size="48px" color="red"></svg-icon>
`
import image from "./image.svg";
import icon from "./image.svg";
import { SvgImage, SvgIcon } from "vite-awesome-svg-loader/vanilla-integration";
new SvgImage(image, "#app");
new SvgIcon(image, "#app").setSize("48px").setColor("red");
Installation
-
Run:
npm i vite-awesome-svg-loader -
Update
vite.config.ts:import { viteAwesomeSvgLoader } from "vite-awesome-svg-loader"; export default defineConfig({ plugins: [ viteAwesomeSvgLoader(), // Other plugins... ], // Other configuration options... });
Documentation
The documentation website is the central knowledge base for vite-awesome-svg-loader.
Quick links
Loader
Examples and demos
Related Packages
rspack-plugin-svg-sprite
SVG sprite loader and plugin for Rspack — drop-in replacement for svg-sprite-loa...
33,315
vite-plugin-svg4vue
A vite plugin which can transform svg icon to vue component, support optimizatio...
30,543
23
Version History
| Version | Released | License |
|---|---|---|
| 5.0.3 | LGPL-2.1-or-later | |
| 5.0.2 | LGPL-2.1-or-later | |
| 5.0.1 | LGPL-2.1-or-later | |
| 5.0.0 | LGPL-2.1-or-later | |
| 4.1.1 | LGPL-2.1-or-later | |
| 4.1.0 | LGPL-2.1-or-later | |
| 4.0.0 | LGPL-2.1-or-later | |
| 3.0.3 | LGPL-2.1-or-later | |
| 3.0.2 | LGPL-2.1-or-later | |
| 3.0.1 | LGPL-2.1-or-later | |
| 3.0.0 | LGPL-2.1-or-later | |
| 2.1.0 | LGPL-2.1-or-later | |
| 2.0.1 | LGPL-2.1-or-later | |
| 2.0.0 | LGPL-2.1-or-later | |
| 1.4.1 | LGPL-2.1-or-later | |
| 1.4.0 | LGPL-2.1-or-later | |
| 1.3.5 | LGPL-2.1-or-later | |
| 1.3.4 | LGPL-2.1-or-later | |
| 1.3.3 | LGPL-2.1-or-later | |
| 1.2.2 | LGPL-2.1-or-later | |
| 1.2.1 | LGPL-2.1-or-later | |
| 1.2.0 | LGPL-2.1-or-later | |
| 1.1.0 | LGPL-2.1-or-later | |
| 1.0.4 | LGPL-2.1-or-later | |
| 1.0.3 | LGPL-2.1-or-later | |
| 1.0.2 | ||
| 1.0.1 | ||
| 1.0.0 |