Vite中使用vite-plugin-svg-icons插件配置SVG图标,并自动去除fill属性

本文介绍了如何在Vite项目中使用vite-plugin-svg-icons插件来管理和使用SVG图标,详细步骤包括插件的安装、配置、创建SvgIcon组件、全局引入和注册,以及组件的使用方法。

Vite中使用vite-plugin-svg-icons插件

安装

// 安装插件
npm i vite-plugin-svg-icons -D

引入并配置插件

在vite.config.js中引入

...
import { resolve } from 'node:path'
// svg-icon插件
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'

export default defineConfig(({command, mode})=>{
	return {
		// ...其他配置
		plugins:[
			// ...其他配置
			createSvgIconsPlugin({
		        // 指定需要缓存的图标文件夹目录
		        iconDirs: [resolve(process.cwd(), 'src/assets/svgIcons')],
		        // 指定symbolId格式
		        symbolId: 'icon-[dir]-[name]',
		        //svgo额外配置,具体配置参考https://github.com/svg/svgo
		        svgoOptions: {
		          plugins: [
		            {
		              name: 'removeAttrs',
		              params: { attrs: ['class', 'data-name', 'fill', 'stroke'] }
	            	}
	          	]
	        }
	      })
		]
	}
})

创建SvgIcon组件

在src/components目录下创建SvgIcon组件,内容如下

template>
  <svg :class="svgClass" aria-hidden="true">
    <use :xlink:href="iconName" :fill="color" />
  </svg>
</template>

<script setup>
const props = defineProps({
	// icon名称
  iconName: {
    type: String,
    required: true
  },
  //组件额外类名
  className: {
    type: String,
    default: ''
  },
  // 颜色属性
  color: {
    type: String,
    default: ''
  }
})

const iconName = computed(() => `#icon-${props.iconClass}`)
const svgClass = computed(() => `svg-icon ${props.className}`)
</script>

<style lang="scss" scoped>
.svg-icon {
  width: 1em;
  height: 1em;
  position: relative;
  fill: currentColor;
  vertical-align: -2px;
}
</style>

全局引入并注册SvgIcon组件

在main.js中引入并全局注册

import SvgIcon from '@/components/SvgIcon'
// ...其他
app.component('svg-icon', SvgIcon)

使用SvgIcon组件

<svg-icon class-name="icon-config" icon-class="config"></svg-icon>
//...
<style>
.icon-config{
	font-size:20px;
	color:#000
}
</style>

参考
vite-plugin-svg-icons仓库

要在Vite项目中正确集成和使用vite-plugin-svg-icons库来管理SVG图标,你可以按照以下步骤操作: 1. **安装依赖**: 首先,你需要通过npm或yarn在项目目录下安装`vite-plugin-svg-icons`插件: ``` npm install --save-dev vite-plugin-svg-icons # 或者 yarn add -D vite-plugin-svg-icons ``` 2. **配置Vite**: 在项目的`vite.config.js`文件中,添加对新插件的支持,将其配置到`plugins`数组中。例如: ```javascript import { defineConfig } from 'vite'; import svgIcons from 'vite-plugin-svg-icons'; export default defineConfig({ plugins: [svgIcons()], // ...其他配置... }); ``` 确保`svg-icons()`函数被正确导入。 3. **配置图标路径**: 根据插件文档,提供一个包含SVG图标路径的对象给`svgIcons`配置选项,通常会指定一个相对路径或绝对路径指向SVG文件所在的目录: ```javascript const iconsDir = './src/icons'; // 或者你实际存放SVG文件的地方 export default defineConfig({ // ... plugins: [svgIcons({ dir: iconsDir })], // ... }); ``` 4. **引用和使用图标**: 在你的Vue组件、CSS或者其他需要使用的文件中,可以使用`importIcon`宏来导入插入SVG图标,比如: ```vue <template> <div> <img :src="importIcon('my-icon')" alt="My Icon" /> </div> </template> <script setup> import { useIcons } from 'vite-plugin-svg-icons'; const icon = useIcons('my-icon'); </script> ``` 5. **构建优化**: 在生产模式下,vite-plugin-svg-icons会对SVG图标进行处理,生成优化过的图标数据,这有助于减少体积和提高性能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值