当前位置: 首页 > news >正文

Vite 常用插件配置:自动导入+自动注册组件+动态创建图标+设置组件名

创建 Vue3+Vite 项目

创建 Vue3 项目

$ pnpm create vue@latest

通过脚手架选择开启以下功能

✔ Project name: … <your-project-name>
✔ Add TypeScript? … No / Yes
✔ Add JSX Support? … No / Yes
✔ Add Vue Router for Single Page Application development? … No / Yes
✔ Add Pinia for state management? … No / Yes
✔ Add Vitest for Unit testing? … No / Yes
✔ Add an End-to-End Testing Solution? … No / Cypress / Nightwatch / Playwright
✔ Add ESLint for code quality? … No / Yes
✔ Add Prettier for code formatting? … No / Yes
✔ Add Vue DevTools 7 extension for debugging? (experimental) … No / YesScaffolding project in ./<your-project-name>...
Done.

进入并启动项目

cd <your-project-name>
pnpm install
pnpm run dev

配置自动引入

作用:script 中使用配置过的内容不需要明文引入。

安装相关包

pnpm install element-plus @vueuse/core
pnpm install unplugin-auto-import -D

配置自动引入

import AutoImport from 'unplugin-auto-import/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
AutoImport({resolvers: [ElementPlusResolver({ importStyle: 'sass' })],imports: ['vue','vue-router','@vueuse/core',{from: 'element-plus',imports: ['ElMessage', 'ElMessageBox']}],dirs: ['./src/components/*/index.vue','./src/enums/*.ts','./src/utils/*.ts','./src/composables']
}),

配置自动注册组件

作用:页面中使用到的相关包中组件,在 script 中不需要明文引入。

安装相关包

pnpm install unplugin-vue-components -D

配置自动注册组件

import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
Components({resolvers: [ElementPlusResolver({ importStyle: 'sass' })]
}),

配置动态生成图标

作用:页面中可以直接通过 组件引用一个 *.svg 文件作为图标使用,设置字体颜色、字体大小等。

安装相关包

pnpm install unplugin-svg-component -D

配置动态生成图标

import UnpluginSvgComponent from 'unplugin-svg-component/vite'
UnpluginSvgComponent({iconDir: path.resolve(__dirname, './src/assets/icons'),projectType: 'vue',vueVersion: 3,prefix: 'icon',dtsDir: path.resolve(__dirname, './src/types/'),dts: true,scanStrategy: 'text',preserveColor: path.resolve(__dirname, './src/assets/icons/preserve')
}),

应用图标

// 取 src/assets/icons 目录下 viewer/edit.svg,不使用原 svg 颜色
<svg-icon name="icon-viewer-edit"></svg-icon>// 取 src/assets/icons 目录下 preserve/home.svg,使用原 svg 颜色
<svg-icon name="icon-preserve-home"></svg-icon>

配置组件名

作用:当使用

安装相关包

pnpm install vite-plugin-vue-setup-extend -D

配置自动注册组件

import Components from 'vite-plugin-vue-setup-extend'
VueSetupExtend()

应用

<script setup name="Viewer"></script>

全部配置

import { defineConfig } from 'vite'
import path from 'path'
import { fileURLToPath, URL } from 'node:url'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import vueDevTools from 'vite-plugin-vue-devtools'import AutoImport from 'unplugin-auto-import/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import Components from 'unplugin-vue-components/vite'
import UnpluginSvgComponent from 'unplugin-svg-component/vite'import VueSetupExtend from 'vite-plugin-vue-setup-extend'// https://vitejs.dev/config/
export default defineConfig({plugins: [AutoImport({resolvers: [ElementPlusResolver({ importStyle: 'sass' })],imports: ['vue','vue-router','@vueuse/core',{from: 'element-plus',imports: ['ElMessage', 'ElMessageBox']}],dirs: ['./src/components/*/index.vue','./src/enums/*.ts','./src/utils/*.ts','./src/composables']}),Components({resolvers: [ElementPlusResolver({ importStyle: 'sass' })]}),UnpluginSvgComponent({iconDir: path.resolve(__dirname, './src/assets/icons'),projectType: 'vue',vueVersion: 3,prefix: 'icon',dtsDir: path.resolve(__dirname, './src/types/'),dts: true,scanStrategy: 'text',preserveColor: path.resolve(__dirname, './src/assets/icons/preserve')}),vue(),vueJsx(),vueDevTools(),VueSetupExtend()],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))}}
})

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C 语言基础概念总结
  • 在没有源程序的情况时,如何通过控制鼠标按钮控制电脑exe程序?
  • Android小技巧:利用动态代理自动切换线程(续)
  • wodpress设置固定链接的方式和好处【SEO优化】
  • Qt遇到qt自身组件找不到
  • Firefox扩展程序和Java通信
  • C# Task.WaitAll 的用法
  • BGP选路之Local Preference
  • table car vs. table cars:数据库命名用单数还是复数?
  • OpenCV图像滤波(1)双边滤波函数bilateralFilter的使用
  • 小规模的LLMS
  • C# 使用pythonnet 迁入 python 初始化错误解决办法
  • GO版本更新
  • [Meachines] Lame smbd3.0-RCE
  • 一文解决 | Linux(Ubuntn)系统安装 | 硬盘挂载 | 用户创建 | 生信分析配置
  • 【译】JS基础算法脚本:字符串结尾
  • Angular 4.x 动态创建组件
  • docker-consul
  • git 常用命令
  • go append函数以及写入
  • learning koa2.x
  • REST架构的思考
  • Vue.js-Day01
  • Yii源码解读-服务定位器(Service Locator)
  • 彻底搞懂浏览器Event-loop
  • 关于springcloud Gateway中的限流
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 前端存储 - localStorage
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 用jquery写贪吃蛇
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • linux 淘宝开源监控工具tsar
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • # Redis 入门到精通(九)-- 主从复制(1)
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • (2020)Java后端开发----(面试题和笔试题)
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Java)【深基9.例1】选举学生会
  • (zhuan) 一些RL的文献(及笔记)
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (十八)Flink CEP 详解
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)Sql Server 保留几位小数的两种做法
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ******IT公司面试题汇总+优秀技术博客汇总
  • *p++,*(p++),*++p,(*p)++区别?
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Net转前端开发-启航篇,如何定制博客园主题
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)