Vue3+Vite项目按需自动导入配置以及一些常见问题修复
一、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": [
"class="lazy" data-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 配置class="lazy" data-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({
// 指定自动导入的组件位置,默认是 class="lazy" data-src/components
dirs: ['class="lazy" data-src/components','class="lazy" data-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前缀)
<el-icon :size="70" color="#409EFC" class="no-inherit">
<i-ep-share />
</el-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',
}),
总结
到此这篇关于Vue3+Vite项目按需自动导入配置以及一些常见问题修复的文章就介绍到这了,更多相关Vue3 Vite项目按需自动导入配置内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341