因此,个人感觉雪碧图还是个很好的方案,但是一直没找到一个好用的方式,因为现在主要的开发时间都在 Next.js 上,只能找找 webpack 插件,多次尝试最后选择了 svg-sprite-loader,但是很久没维护了,使用体验欠佳。svg-sprite 看起来很强大,但是没有提供插件集成,对于想伸手即用的我来说,还是麻烦了些。
一上头 😦 打算手搓一个 SVG 雪碧图插件,刚好之前就了解过 unplugin,但是一直没实操过,直接找个模板开始折腾。经过两天的折腾,目前初步的功能是有了,学习了 svg-sprite 之后才知道 SVG 雪碧图有很多种类型,目前支持了个人觉得比较合适两个类型:symbol 和 stack,其中 symbol 的使用时最简单的,开发上直接引入即可,目前的主要功能有:
因为是框架无关的,所以需要配置相关的生成函数,目前测试 Vite/Next.js/Nuxt 都没啥问题。这里需要补充几点:
stack 因为是 CSS 中使用的,插件上好像不太好处理,比如 vite 对于引入 CSS 文件根本不走插件 Hooks,所以暂时只是基于 svg-sprite 做了生成逻辑,没有更多的定制功能了,可以借助 svg-sprite 提供的 example.html 查阅选择。
活儿整完了,欢迎各位大佬试用反馈 😄 当然,这只是起了个步,后续还得继续优化,比如支持 SVGO 配置。最后附上链接:
https://github.com/yunsii/unplugin-svg-sprite