npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

purge-icon-vue3

v0.0.6

Published

> 🔥 该插件旨在能在项目中快速使用icon图标的一站式解决方案,包括我们常见的图片、svg、字体图标、iconify,便于项目不去在复杂应对管理各种各样的图标资源

Downloads

8

Readme

🚀 Purge-Icon-Vue3

🔥 该插件旨在能在项目中快速使用icon图标的一站式解决方案,包括我们常见的图片、svg、字体图标、iconify,便于项目不去在复杂应对管理各种各样的图标资源

一、插件的背景和目标


  • 背景 - 工程中使用图标的场景很多。从最早的图片、雪碧图 -> 字体图标 -> Symbol雪碧图,许多的的UI组件库也提供了内置的图标库,在vue3流行后UI组件库都选择了把图标分离为单独的依赖库,让图标的引用很麻烦。iconify的出现让不同组件库的图标使用更简单了.

  • 目标 - 实现iconify图标引用,实现本地svg图标引用,实现iconfont图标引用.

  • 鸣谢 - 该插件实现参考vite-plugin-purge-icons和vite-plugin-svg-icons两个库,特别感谢

  • 声明 - 该插件旨在减化自己工作中重复工作的工具,实现原理简单,自身能力有限,使用者勿喷,如果有好的想法和建议也可在issue中提出

二、插件的注册


Install:

$ npm install purge-icon-vue3

Use in main.ts for register plugin:

createApp(App)
    .use(PurgeIconVue3)
    .mount('#app')

三、按插件使用(Purge-Icon-Vue3会自动注册一个PurgeIcon的全局组件)


  1. 使用iconify图标:
// xxx.vue 使用组件
<PurgeIcon icon="icon-park:subway" size="16" color="red" />
  1. 使用iconfont图标: type指定iconfont
// main.ts 适当的地方引入iconfont的字体图标文件
import './assets/iconfont/iconfont.css';

// xxx.vue 使用组件
<PurgeIcon type="iconfont" icon="icon-huocheditiezhantai" size="16" color="red" />
  1. 使用svg图标: type指定svg
/* 使用iconfont的Symbol集合 */

// main.ts 适当的地方引入iconfont的字体图标文件
import './assets/iconfont/iconfont.js';

// xxx.vue 使用组件
<PurgeIcon type="svg" icon="icon-huocheditiezhantai" size="16" />
/* 使用本地svg文件 */

// vite.config.ts 使用插件自动加载本地的svg文件,示例使用的是vite插件,其它打包器需找
// 到对应的插件
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
export default defineConfig({
    plugins: [
        createSvgIconsPlugin({
            iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
            symbolId: 'icon-[dir]-[name]'
        }),
    ]
})

// main.ts 引入注册代码
import 'virtual:svg-icons-register';

// xxx.vue 使用组件
<PurgeIcon type="svg" icon="icon-huocheditiezhantai" size="16" />
  1. 使用image图标: type指定image
import IconUrl from '@/assets/image/xxx.png';

// xxx.vue 使用组件
<PurgeIcon type="image" :icon="IconUrl" size="16" />
值得一说的是, webpack的项目中, 我们要在模板中引用一个图片很容易, 使用require函数就可以了, 不需要在js代码去操作
// xxx.vue 使用组件
<PurgeIcon type="image" :icon="require('@/assets/image/xxx.png')" size="16" />

但是在vite项目中动态引入图片就是一件很麻烦的事了, 我们可以手动实现一个vite版的require函数挂载到全局实例, 然后在模板上调用
// main.js
app.config.globalProperties['$require'] = (path: string) => {
  if (path.startsWith('@')) {
    const fileName = '.' + path.slice(path.lastIndexOf('@') + 1)
    return new URL(fileName, import.meta.url).href
  } else {
    return new URL(path, import.meta.url).href
  }
}

// xxx.vue 使用组件
<PurgeIcon type="image" :icon="$require('@/assets/image/xxx.png')" size="16" />

四、按组件使用


// xxx.vue 使用组件
import { PurgeIcon, IconSvg, Iconfont, Iconify, IconImage } from 'purge-icon-vue3';

<PurgeIcon type="svg" icon="icon-huocheditiezhantai" size="16" color="red" />
<IconSvg icon="icon-huocheditiezhantai" size="16" color="red" />
<Iconfont icon="icon-huocheditiezhantai" size="16" color="red" />
<Iconify icon="icon-huocheditiezhantai" size="16" color="red" />
<IconImage :icon="require('@/assets/image/xxx.png')" size="16" />

// purge-icon-vue3可以导出五个组件
PurgeIcon - 针对加载iconify图标, svg图标, iconfont图标, image图片图标
IconSvg - 针对加载svg图标
Iconfont - 针对加载iconfont图标
Iconify - 针对加载iconify图标
IconImage - 针对加载image图标

五、组件支持选项


| 选项 | 含义 | 类型 | 默认值 | 可选 | |-----------|----------|----------------|-----------|----------------------------| | type | 图标类型 | string | iconify | iconify、svg、iconfont、image | | icon | 图标引用 | string | - | - | | width | 图标宽度 | number, string | undefined | 优先级高于size | | height | 图标高度 | number, string | undefined | 优先级高于size | | size | 图标大小 | number, string | 16 | - | | color | 图标颜色 | string | - | - | | spin | 图标旋转动画 | boolean | false | true / false | | spinStyle | 图标旋转动画样式 | object | {} | |

    1. icon选项参数说明,Iconify引用名是图标名、Iconfont引用名是字体图标名,IconSvg引用名是`icon-${文件名}`,IconImage
       引用名是图片地址
    2. size、width、heigh参数说明,width、height的优先级高于size,存在值时优先取用,不存在时取用size来设置图标尺寸
    3. color参数说明,iconify图标, iconfont图标均是支持color选项,svg图标也支持color选项(但svg图标中写死了color颜色则选项不生效,需要自己修改源图标),
       image图标不支持color选项就是一张img图片
    4. spin、spinStyle参数说明,spin是添加一个图标的旋转动画,这个还是比较实用功能用于制作加载等常见,spinStyle则是可以修改css旋转动画的参数

六、注意事项


    1. iconify图标本库已经做处理, 不需要安装其它依赖库可以直接使用, 可在此
       处('https://icon-sets.iconify.design/')查找对应的图标即可
    2. iconfont图标需要使用者自己在外部引入图标依赖文件, 具体使用参考iconfont
    3. svg本地图标文件, 要用户自己使用插件生成引入, 详参'vite-plugin-svg-icons'插件,
       需要注意的是插件生成的symbolId是`icon-${文件名}`, 原因是为了和iconfont symbol图标保持一致
    4. image图标需要接收的是图片路径参数,实际本身就是一个img标签,这里需要注意的是为了能在模板中快速动态引入图片资源,
       对于webpack工程提供了require函数能很好的引用图片地址,vite工程则需要自己编写一个require函数