打造属于自己的vue图标库

hfex-icon图标库

Install

复制代码
npm i -D hfex-icon

主要提供2种使用方式

方式一

通过svg图标资源,借助unplugin-icons库将svg图标文件生成vue组件,然后通过vue组件的引入方式在vue中使用

unplugin-icons

兼容vue2和vue3

在vue.config.js的plugins中配置

Install unplugin-icons

复制代码
npm i -D unplugin-icons

Webpack版本

复制代码
const path = require('path')
const Icons = require('unplugin-icons/webpack');
const { FileSystemIconLoader } = require('unplugin-icons/loaders');
module.exports = {
  configureWebpack:{
    plugins:[
        Icons({
            compiler: vue2,//vue2或者vue3,看当前项目
            customCollections: {
                'hfex-icon': FileSystemIconLoader(path.join(process.cwd(), './node_modules/hfex-icon/icons'), svg =>
                    svg.replace(/^<svg /, '<svg fill="currentColor" ')
                )
            }
        })
    ]
  }
}

Vite版本

复制代码
import { defineConfig } from 'vite'
import Icons from 'unplugin-icons/vite'
import path from 'path'
import { FileSystemIconLoader } from 'unplugin-icons/loaders'
export default defineConfig({
  plugins:[
    Icons({
    compiler: vue3,//vue2或者vue3,看当前项目
    customCollections: {
      'hfex-icon': FileSystemIconLoader(path.join(process.cwd(), './node_modules/hfex-icon/icons'), svg => {
        return svg.replace(/^<svg /, '<svg fill="currentColor" ')
      }

    )
  }
}),
]
})

也可以通过hfex-icon-plugin 配置,hfex-icon-plugin是将以上plugin上的配置封装起来

Install

复制代码
npm i hfex-icon-plugin -D

在vue.config.js的plugins中配置(webpack)

vite版本待更新...

复制代码
const HfexIconPlugin = require('hfex-icon-plugin')
module.exports = {
    configureWebpack:{
        plugins:[
            ...HfexIconPlugin.plugins
        ]
    }
}

在vue入口文件引入注册组件

复制代码
import HfexIcon from 'hfex-icon'
app.use(HfexIcon) //vue3
Vue.use(MfexIcon); //vue2

使用

复制代码
<hfex-icon name="home" color="#999" size="80px"/>

效果展示

参数支持

参数 类型 默认值
name string home
size string 28px
color string #000

方式二

配合unocss使用

Install unocss

复制代码
npm install -D unocss

在vue入口文件引入

复制代码
import 'uno.css'

在vue.config.js的plugins中配置

复制代码
npm install -D @unocss/webpack

//vue.config.js
const UnoCSS = require('@unocss/webpack').default
const presetIcons = require('unocss').presetIcons
const presetUno = require('unocss').presetUno
const presetAttributify = require('unocss').presetAttributify

module.exports = {
  configureWebpack:{
    plugins:[
      UnoCSS({
        presets: [
          presetUno(),
          presetAttributify(),
          presetIcons({
            collections: {
              'hfex-icon': () => require('hfex-icon/iconify-json/hfex-icon.json')
            }
          })
        ]
      }),
    ]
  }
}

vite中使用

复制代码
//vite.config.ts
import Unocss from 'unocss/vite'
import { defineConfig } from 'vite'
import Unocss from 'unocss/vite'
import { presetUno, presetAttributify, presetIcons } from 'unocss'

export default defineConfig({
  plugins:[
      UnoCSS({
        presets: [
          presetUno(),
          presetAttributify(),
          presetIcons({
            collections: {
              'hfex-icon': () => require('hfex-icon/iconify-json/hfex-icon.json')
            }
          })
        ]
      }),
    ]
})

使用

复制代码
<div class="i-hfex-icon:message w-80px h-80px bg-#cde6c7"></div>
<div class="i-hfex-icon:delete w-80px h-80px bg-#994405"></div>
<div class="i-hfex-icon:share w-80px h-80px bg-#cde6c7"></div>

效果展示

图标支持

相关推荐
冰暮流星16 分钟前
javascript之对象的建立-使用Object
开发语言·javascript·ecmascript
加点油。。。。17 分钟前
【1.Obsidian渲染html文件】
前端·html·obsidian
ZFSS18 分钟前
BYOK(自带密钥)使用指南
运维·服务器·前端·人工智能·midjourney
AI_零食18 分钟前
呼吸灯 - 通过鸿蒙PC Electron框架技术完成-在焦虑时代守护每一次呼吸的数字禅修
前端·javascript·华为·electron·前端框架·鸿蒙
佛山个人技术开发25 分钟前
高端旅游风景区酒店民宿网站模板 自适应宽屏文旅酒店源码
前端·html5·旅游
ZC跨境爬虫37 分钟前
跟着 MDN 学JavaScript day_5:技能测试——变量实战
java·开发语言·前端·javascript
HjhIron44 分钟前
深入理解 JavaScript 执行机制:从编译到运行的完整揭秘
javascript
pan_junbiao1 小时前
Whistle 抓包工具的安装与使用
前端·测试工具·压力测试·抓包
Cory.眼1 小时前
前端调用后端接口全流程实战
前端·调用接口
云水一下1 小时前
TypeScript 从零基础到精通(四):面向对象编程(类与继承)
javascript·typescript