vite+ts+vue3+elementPlus动态引入icons

import { createApp } from 'vue'
import App from './App.vue'
import router from './router/index'
import { store, key } from '@/store/index'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
// 统一导入el-icon图标
import * as Icons from '@element-plus/icons'
const app= createApp(App);
app.use(router).use(store,key).use(ElementPlus).mount('#app')
// 方式一
Object.keys(Icons).forEach((key) => {
    app.component(key,Icons[key as keyof typeof Icons])
});
使用方式:
<component :is="xxx" class="xxx">

方式二
const Icon = (props: { icon: string }) => {
    const { icon } = props;
    return createVNode(Icons[icon as keyof typeof Icons]);
};
app.component('Icon', Icon);
使用方式:
<Icon icon="xxx">

解决type ‘string’ can’t be used to index type 'typeof 字符串不能做下标的错,在tsconfig.json的 compilerOptions 中添加如下配置

方式一:

"suppressImplicitAnyIndexErrors": true, //解决用字符串做下标报错

方式二:

key as keyof typeof Icons
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3 + TypeScript + Vite项目中使用PurgeCSS进行打包时,可能会遇到打包失败的问题。这通常是由于PurgeCSS与TypeScript的类型检查器发生冲突导致的。 要解决这个问题,可以尝试在Vite的配置文件中添加一个插件,用于在TypeScript类型检查完成后再运行PurgeCSS。以下是一个示例配置: ```javascript // vite.config.js import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; import PurgeIcons from 'vite-plugin-purge-icons'; import PurgeCSS from '@fullhuman/postcss-purgecss'; import autoprefixer from 'autoprefixer'; import postcssImport from 'postcss-import'; export default defineConfig({ plugins: [ vue(), PurgeIcons(), { name: 'postcss', apply: 'build', async transform(code, id) { if (!/\.vue\?/.test(id)) { return; } const postcssPlugins = [ postcssImport(), autoprefixer(), ]; if (this.isProduction) { postcssPlugins.push(PurgeCSS({ content: [id], safelist: [ 'html', 'body', ], })); } const { css } = await require('postcss')(postcssPlugins).process(code, { from: id }); return { code: css, }; }, }, ], }); ``` 在这个配置中,我们使用Vite的插件系统来运行PostCSS。在PostCSS中,我们使用了PurgeCSS来清除未使用的CSS,但是只在生产环境中使用。在Vite的配置中,我们使用了一个名为`postcss`的自定义插件,并在`apply`选项中指定了它只在打包时运行。 在这个自定义插件中,我们首先检查文件是否为Vue文件,如果不是,直接返回。接下来,我们定义了PostCSS的插件列表,包括`postcss-import`和`autoprefixer`。如果在生产环境中,我们还会添加一个`@fullhuman/postcss-purgecss`插件来清除未使用的CSS。 最后,我们使用动态`require`语句来运行PostCSS,并返回处理后的CSS。这样,我们就可以在TypeScript类型检查完成后再运行PurgeCSS,避免了它们之间的冲突。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值