Vue3+Vite项目按需自动导入配置及常见问题修复
创始人
2024-04-22 13:39:24
0次

文章目录

    • 一、Vue API自动导入
      • 1.1 配置`unplugin-auto-import`
      • 1.2 可能遇到ts,eslint不识别而导入报错的问题
        • 1.3 配置src/component目录下的组件自动引入
    • 二、按需引入UI组件库(antd,element-plus)
      • 2.1、按需引入element-plus
        • 2.2 ant-design-vue 按需引入
      • 2.3 自动导入 Element Plus Icon
    • 三、关于配置文件

一、Vue API自动导入

解决的问题:避免在每个vue组件中都重复性的去声明ref,reactive等。如下:

import {ref, reactive} from 'vue' // 配置自动导入,用来省略这句手动引入 
const test = ref('aaaa')

1.1 配置unplugin-auto-import

具体配置:

  • 安装vite插件:unplugin-auto-import
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
export default defineConfig({plugins: [vue(),AutoImport({// 自动导入 Vue 相关函数,如:ref, reactive, toRef 等imports: ['vue'],}),],
});

1.2 可能遇到ts,eslint不识别而导入报错的问题

1、typescript 报错:'reactive' is not defined.

  • 原因:TS未识别到vue api,没有相应的模块声明文件
  • 处理:在vite中配置并生成auto-imports.d.ts ,并在tsconfig.json中引入
    ’在这里插入图片描述
// vite.config.js
export default defineConfig({plugins: [vue(),AutoImport({// 自动导入 Vue 相关函数,如:ref, reactive, toRef 等imports: ['vue'],// 生成自动导入的TS声明文件dts: "/auto-import.d.ts", }),],
});
  • tsconfig.json
{"include": ["src/**/*.d.ts","./*.d.ts","./auto-imports.d.ts" // 导入上一步生成的配置文件],
}

2、eslint不识别报错 error 'reactive' is not defined no-undef
在这里插入图片描述
原因:未配置自动导入相应的eslint规则
处理:通过autoimport中的配置生成对应.eslintrc-auto-import.json配置文件,并在.eslintrc中引入

// vite.config.js  
{// ......AutoImport({imports: ["vue"],resolvers: [ElementPlusResolver()],dts: "/auto-import.d.ts",eslintrc: {enabled: true,  // 1、改为true用于生成eslint配置。2、生成后改回false,避免重复生成消耗},}),
}
 extends: [//....此处活力之前配置."./.eslintrc-auto-import.json",],

1.3 配置src/component目录下的组件自动引入

在页面组件中,不用手动导入组件,直接使用组件的方式:

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';export default defineConfig({plugins: [vue(),AutoImport({// 自动导入 Vue 相关函数,如:ref, reactive, toRef 等imports: ['vue'],}),Components({// 指定自动导入的组件位置,默认是 src/componentsdirs: ['src/components','src/otherComponents'],}),],
});

二、按需引入UI组件库(antd,element-plus)

2.1、按需引入element-plus

官方文档很清晰,用到unplugin-vue-components 和 unplugin-auto-import这两款插件

// vite.config.ts
import { defineConfig } from 'vite'
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: [// ...AutoImport({// 自动导入element相关函数,如:ElMessage, ElMessageBox..resolvers: [ElementPlusResolver()],}),Components({// 自动导入element相关组件resolvers: [ElementPlusResolver()],}),],
})

2.2 ant-design-vue 按需引入

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'export default defineConfig({plugins: [vue(),Components({resolvers: [AntDesignVueResolver(),],}),]
})

2.3 自动导入 Element Plus Icon

element-plus 图标是用 svg 渲染的,需要额外的导入方法。官方文档对于icons也有相应说明。

  • 安装额外插件:npm install -D unplugin-icons
  • 配置自动导入
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
import Icons from 'unplugin-icons/vite';
import IconsResolver from 'unplugin-icons/resolver';
import Components from 'unplugin-vue-components/vite';
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';export default defineConfig({plugins: [vue(),AutoImport({resolvers: [// ....// 自动导入图标组件IconsResolver({prefix: 'Icon',}),],}),Components({resolvers: [// .....// 自动注册图标组件IconsResolver({enabledCollections: ['ep'], //@iconify-json/ep 是 Element Plus 的图标库,所以 IconsResolver 配置了 enabledCollections: ['ep']}),],}),Icons({autoInstall: true,}),],
});

注意:通过此方法自动引入后,使用icon时,请采用以下方式才生效。(添加i-eq作为icon前缀)



三、关于配置文件

unplugin-auto-import会默认在要目录生成auto-imports.d.ts文件,unplugin-vue-components对应会在根目录生成components.d.ts文件,分别描述自动导入的 API、component。通过在tsconfig.json的include中引入对应配置文件,避免TS报错。

AutoImport({// ...// 配置文件生成位置,默认是根目录 /auto-imports.d.ts// dts: './auto-imports.d.ts',
}),
Components({// ...// 配置文件生成位置,默认是根目录 /components.d.ts// dts: './components.d.ts',
}),

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...