An all-in-one Vite plugin (v1.9.0) for SVG imports that bundles SVGs into spritesheets, supports tree-shaking, and processes referenced assets. Key differentiators vs alternatives like SVGR or vite-plugin-svg-icons: resolves references (e.g., <image href>) inside SVGs, allows selective exclusion per SVG via query parameters, supports multiple output targets (React, Preact, Vue, Solid, Svelte, Ember, Lit, vanilla DOM), and provides experimental features like recoloring control and width/height normalization. Shipped with TypeScript types, requires Vite >= 3.0.0, and follows a fast release cadence with frequent dependency upgrades.
npm install vite-plugin-magical-svgVerified import paths — ran on the pinned version, not inferred.
Shows setup with Preact target and usage of an SVG as a component with custom props.
Upgrade to v1.7.3 or later; v1.7.2 is broken.
Use default import: import magicalSvg from 'vite-plugin-magical-svg'. No path changes required for most users.
Always use explicit query suffix (e.g., ./icon.svg?component) to import SVGs.
Ensure SVG imports are static: import Icon from './icon.svg?component'
No action needed; sprites are only generated in production builds.
Run 'npm install vite-plugin-magical-svg' (or yarn/pnpm). For ESM, ensure you are using import syntax.
Change to: import magicalSvg from 'vite-plugin-magical-svg'
Use: import icon from './icon.svg?component'