Vite配置自动导入API以及组件库组件

前言

开发时,有些诸如ref、reactive、路由相关等API 和 常用组件,使用前必须导入,这些导入语句没有意义而且占用过多行代码,容易造成阅读困难。

可以使用插件实现自动导入,使代码更加简洁。本文以 ViteElement Plus 举例,其他组件库也可以从本文介绍的插件中直接使用。

配置

下载 unplugin-auto-import/vite 插件

npm install unplugin-auto-import -D

vite.config.ts 进行配置

import AutoImport from 'unplugin-auto-import/vite'

export default {
  plugins: [
    AutoImport({
      // 自动导入 Vue 相关函数,如 ref、computed 等
      imports: ['vue', 'vue-router'],
      // 生成 `auto-imports.d.ts` 文件,为自动导入的 API 提供类型支持,如果不配置默认在项目更目录下创建该文件
      dts: 'src/auto-imports.d.ts',
      // 自定义自动导入的模块
      dirs: [
        './src/composables', // 自动导入 `src/composables` 目录下的模块
      ],
      // 配置自动导入的文件名和扩展名
      eslintrc: {
        enabled: true, // 默认关闭,设置为 true 自动生成 ESLint 配置文件
        filepath: './.eslintrc-auto-import.json', // 配置文件路径
      },
    }),
  ],
}

参数说明:

  • imports: 指定要自动导入的库,如 [‘vue’, ‘vue-router’]。
  • dts: 指定生成的类型声明文件路径,为自动导入的 API 提供类型支持。如果不配置,默认会在项目根目录下创建类型声明文件。不小心删除该文件不用担心,每次 npm run dev 启动项目后,会自动生成该文件。
  • dirs: 指定需要自动导入的模块目录,如 src/composables、src/api。
  • eslintrc: 自动生成 ESLint 配置,避免 ESLint 报错。

使用时无需导入,即可使用

<template>
  <div>home</div>
</template>

<script setup>
const n = ref(0)
const o = reactive({})
const router = useRouter()
</script>

组件库配置

使用组件库时通常需要考虑打包优化,最常见的方式是按需导入以及分包,下面介绍按需导入并且使用时无需导入。

下载插件

npm install unplugin-vue-components unplugin-auto-import -D

vite.config.ts 进行配置

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      resolvers: [ElementPlusResolver({
	      importStyle: 'sass',  // 使用按需加载的 Sass 样式
	    })], // 自动导入 Element Plus 的 API
      imports: ['vue', 'vue-router'],  
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
  build: {
    rollupOptions: {
      output: {
        manualChunks(id) {
          // 将 Element Plus 单独打包
          if (id.includes('node_modules/element-plus')) {
            return 'element-plus'
          }
        },
      },
    },
  },
})

如上配置后,使用时便无需导入组件,如果需要使用配套 icons,需要额外配置。

确保已经下载icons

pnpm install @element-plus/icons-vue

下载自动导入的插件

pnpm install -D  unplugin-icons 
// .....
import Icons from "unplugin-icons/vite"
import IconsResolver from "unplugin-icons/resolver"

export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
  const config = loadEnv(mode, "./")

  return {
    ...
    plugins: [
      AutoImport({
        resolvers: [ElementPlusResolver(), IconsResolver()],
        imports: ["vue", "vue-router"],
        dts: "./src/types/auto-imports.d.ts",
      }),
      Components({
        resolvers: [
          ElementPlusResolver(),
          IconsResolver({ enabledCollections: ["ep"] }),
        ],
        dts: "./src/types/components.d.ts",
      }),
      // 自动安装图标
      Icons({
        compiler: "vue3", // 编译方式
        autoInstall: true,
      }),
    ],
  }
})

本文以 Element Plus 举例,但是该插件中同样支持其他组件库,详情可看官方地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/914635.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

hive中windows子句的使用

概述 1&#xff0c;windows子句是对窗口的结果做更细粒度的划分 2、windows子句中有两种方式 rows &#xff1a;按照相邻的几行进行开窗 range&#xff1a;按照某个值的范围进行开窗 使用方式 (rows | range) between (UNBOUNDED | [num]) PRECEDING AND ([num] PRECEDING…

云渲染:服务器机房与物理机房两者有什么区别

云渲染选择服务器机房与物理机房两者主要区别在哪里呢&#xff1f; 服务器机房和物理机房作为云渲染的基础设施&#xff0c;各自扮演着不同的角色。 服务器机房的特点 服务器机房&#xff0c;通常指的是那些专门用于托管服务器的设施&#xff0c;它们可能位于云端&#xff0c…

零基础Java第十四期:继承与多态(二)

目录 一、继承 1.1. 继承的方式 1.2. final关键字 1.3. 继承与组合 1.4. protected关键字 二、多态 2.1. 多态的概念 2.2. 向上转型 2.3. 重写 2.4. 向下转型 2.5. 多态的优缺点 一、继承 1.1. 继承的方式 猫类可以继承动物类&#xff0c;中华田园猫类可以继承猫类…

电销系统:业绩翻倍的秘密武器

在当今竞争激烈的商业环境中&#xff0c;企业都在寻求各种方法来提升业绩。而电销系统正以其强大的功能和优势&#xff0c;成为众多企业实现业绩翻倍的有力工具。 一、高效的客户管理 电销系统能够对客户信息进行全面、系统的管理。从客户的基本资料、联系方式到历史沟通记录、…

CTFhub靶场RCE学习

靶场 eval执行 <?php if (isset($_REQUEST[cmd])) {eval($_REQUEST["cmd"]); } else {highlight_file(__FILE__); } ?> PHP代码显示&#xff0c;要求将命令赋值给cmd然后执行 先查看一下根目录文件 ?cmdsystem("ls");&#xff01;切记最后的分…

软件架构技术深入解析:AOP、系统安全架构、企业集成平台与微服务架构

目录 试题一 论面向方面的编程技术及其应用 解析 试题二 论系统安全架构设计及其应用 解析 试题三 论企业集成平台的理解与应用 解析 &#xff08;1&#xff09;通信服务 &#xff08;2&#xff09;信息集成服务 &#xff08;3&#xff09;应用集成服务 &#xff08;…

计算机网络基础:从IP地址到分层模型

计算机网络 1.计算机网络概述 概述 ​ 计算机网络是指两台或更多的计算机组成的网络&#xff0c;在同一个网络中&#xff0c;任意两台计算机都可以直接通信。互联网是网络的网络&#xff08;Internet&#xff09;&#xff0c;即把很多计算机网络连接起来&#xff0c;形成一个…

SpringCloud篇(服务提供者/消费者)(持续更新迭代)

在服务调用关系中&#xff0c;会有两个不同的角色&#xff1a; 服务提供者&#xff1a;一次业务中&#xff0c;被其它微服务调用的服务。&#xff08;提供接口给其它微服务&#xff09; 服务消费者&#xff1a;一次业务中&#xff0c;调用其它微服务的服务。&#xff08;调用…

【UML】类图及其六种关系,超详细介绍,细节满满

目录 一、概念 推荐一个画UML相关图的软件&#xff1a;ProcessOn 二、快速介绍类图 1、普通类的类图 2、抽象类的类图 3、接口的类图 三、类与类之间的关系 &#xff08;一&#xff09;、关联关系 1、单向关联 2、双向关联 3、自关联 &#xff08;二&#xff09;、聚…

HTML文件中引入jQuery的库文件

方法一&#xff1a; 1. 首先&#xff0c;在官方网站(https://jquery.com/)上下载最新版本的jQuery库文件&#xff0c;通常是一个名为jquery-x.x.x.min.js的文件。 2. 将下载的jquery-x.x.x.min.js文件保存到你的项目目录中的一个合适的文件夹中&#xff0c;比如将它保存在你的项…

使用Wireshark获取USB HID(Human Interface Device)报告描述符

使用Wireshark选择需要获取的USB进行抓取数据&#xff0c;找到设备&#xff08;host&#xff09;接收信息的数据 第二栏出现hid报告&#xff0c;右击选择复制流 将复制的内容粘贴到USB标准请求及描述符在线分析工具 - USB中文网 进行解析 以图中获取手写板的数据为例&#xff…

ReactPress与WordPress:一场内容管理系统的较量

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress WordPress官网&#xff1a;https://wordpress.org/ ReactPress与WordPress&#xff1a;一场内容管理系统的较量 在当今数字化时代&#xff0c;内容管理系统&#xff08;CMS&#xff09;已成为…

DevExpress WinForms中文教程:Data Grid - 如何绑定到实体框架数据源?

在本教程中&#xff0c;您将学习如何将DevExpress WinForms的网格控件绑定到实体框架数据源、如何使用数据注释属性来更改网格显示和管理数据的方式&#xff0c;以及如何将单元格值更改发送回数据源。 P.S&#xff1a;DevExpress WinForms拥有180组件和UI库&#xff0c;能为Wi…

使用多种机器学习调参模型进行二分类建模的全流程,代做分析辅导

使用多种机器学习调参模型进行二分类建模的全流程教程 机器学习全流程分析各个模块用到的总的参数文件 0. 分析参数文件 参数文件名称&#xff1a;total_analysis_params_demo.xlsx &#xff0c;很多分析模块都是这个总的参数文件&#xff0c;我的这个总的参数文件如果有更新…

材质(一)

描述&#xff1a; 材质蓝图&#xff0c;蓝图可以这么定义&#xff0c;是一种数据结构&#xff0c;是一种带有流水线的模糊的数据结构&#xff0c; 材质蓝图也是一种蓝图。 示例操作:

SCI论文数据可视化的在线网址

目录 SCI论文数据可视化的在线网址 EVenn(Evenn):免费 SCI论文数据可视化的在线网址 数据可视化的在线网址,以下是一些值得推荐的资源: ImageGP(ImageGP | ImageGP):该平台可以在线生成常见的线图、柱状图、散点图、箱线图、集合图、热图和直方图等。用户只需粘贴数…

电子应用产品设计方案-4:基于物联网和人工智能的温度控制器设计方案

一、概述 本温度控制器旨在提供高精度、智能化、远程可控的温度调节解决方案&#xff0c;适用于各种工业和民用场景。 二、系统组成 1. 传感器模块 - 采用高精度的数字式温度传感器&#xff0c;如 TMP117&#xff0c;能够提供精确到 0.01C 的温度测量。 - 配置多个传感器分布在…

5G的发展演进

5G发展的驱动力 什么是5G [远程会议&#xff0c;2020年7月10日] 在来自世界各地的政府主管部门、电信制造及运营企业、研究机构约200多名会议代表和专家们的共同见证下&#xff0c;ITU-R WP 5D#35e远程会议宣布3GPP 5G技术&#xff08;含NB-IoT&#xff09;满足IMT-2020 5G技…

人工智能--自然语言处理简介

上一篇&#xff1a;《人工智能模型训练中的数据之美——探索TFRecord》 序言&#xff1a;自然语言处理&#xff08;NLP&#xff09;是人工智能中的一种技术&#xff0c;专注于理解基于人类语言的内容。它包含了编程技术&#xff0c;用于创建可以理解语言、分类内容&#xff0c…

第8章 利用CSS制作导航菜单

8.1 水平顶部导航栏 水平莱单导航栏是网站设计中应用范围最广的导航设计&#xff0c;一般放置在页面的顶部。水平 导航适用性强&#xff0c;几乎所有类型的网站都可以使用&#xff0c;设计难度较低。 如果导航过于普通&#xff0c;无法容纳复杂的信息结构&#xff0c;就需要在…