赞
踩
yarn add @iconify/iconify
yarn add @purge-icons/generated vite-plugin-purge-icons @iconify/json -D
# @iconify/json 中存放了离线字体
# vite-plugin-purge-icons 提供了离线扫描功能
# 扫描vue、ts、js等文件中插件正则匹配到的字体图标;
# 正常情况下,扫到的图标可以通过@iconify/json离线图标库加载
# 没扫到的图标会调用官方api远程加载
iconData.json
(在离线扫描失效时使用){
"ep:": ["add-location", "aim", "alarm-clock", "apple"],
"fa:": ["home", "address-book", "address-book-o", "address-card"],
"fa-solid:": ["abacus", "ad", "address-book"]
}
import PurgeIcons from 'vite-plugin-purge-icons' import iconData form './data/iconData.json' type ValueType<T> = [T, T[]] // 提前加载本地图标数据 // 依赖 @iconify/json 包中提供的的数据 const preloadOfflineIcons = (iconData): string[] => { return Object.entries(iconData).reduce((a: string[], [k, v]: ValueType<string>) => { a = a.concat(v.map((i) => k+i)) return a }, []) } // included中配置的图标不经过文件扫描,可通过@iconify/json处理后直接离线加载 export default { plugins: [ PurgeIcons({ included: preloadOfflineIcons() }) ] }
import { createApp } from 'vue'
import App from './App.vue'
import '@purge-icons/generated' // <-- This
createApp(App).mount('#app')
<!--
注意:未能离线加载的图标将调用官方api来加载
正常情况不需要在vite.config.js中配置included,因为会自动扫描vue等文件进行离线加载
只有当 data-icon 中的值是通过动态绑定,导致扫描时正则匹配失效,此时若需离线加载,则需配合included使用
-->
<span class="iconify" data-icon="fa:home"></span>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。