@mcansh/vite-plugin-svg-sprite
这个 Vite 插件会将任何导入的 SVG 文件转换并组合成一个 SVG 雪碧图
安装和设置
npm i -D @mcansh/vite-svg-sprite-plugin
这是一个使用 Remix 的示例,但此插件适用于任何 Vite 配置
import { svgSprite } from "@mcansh/vite-plugin-svg-sprite";
import { vitePlugin as remix } from "@remix-run/dev";
import { defineConfig } from "vite";
import tsconfigPaths from "vite-tsconfig-paths";
export default defineConfig({
plugins: [remix(), tsconfigPaths(), svgSprite()],
});
您可以配置生成的雪碧图文件名以及生成的 symbol id 模式
import { DEFAULT_COPY_ATTRS, svgSprite } from "@mcansh/vite-plugin-svg-sprite";
svgSprite({
spriteOutputName: "sprite.svg",
symbolId: "icon-[name]-[hash]",
svgstoreOptions: {
copyAttrs: [
...DEFAULT_COPY_ATTRS,
// any additional attributes you want to copy from the svg to the symbol
],
},
});
用法
import spriteUrl from "virtual:@mcansh/vite-plugin-svg-sprite";
import linkIconHref from "@primer/octicons/build/svg/link-16.svg";
import type { LinksFunction } from "@remix-run/node";
export const links: LinksFunction = () => {
return [
{ rel: "preload", as: "image", href: spriteUrl, type: "image/svg+xml" },
];
};
export default function Component() {
return (
<svg className="size-4" aria-hidden>
<use href={linkIconHref} />
</svg>
);
}