Vue3 使用 unplugin-auto-import 配置自动导入


Vue3 使用 unplugin-auto-import 配置自动导入

一、前言

在Vue3开发中,我们经常需要频繁导入使用vuevue-routerpinia等库的API,如refreactiveonMounteduseRoute等。每次都要手动编写import语句既繁琐又影响开发效率。unplugin-auto-import插件可以帮助我们自动导入这些API,无需手动编写import语句,大大提升开发效率。

二、unplugin-auto-import 简介

unplugin-auto-import 是一个 Vite/Webpack/Rollup 插件,用于自动导入 API,支持 Vue、Vue Router、Pinia 等库,以及自定义工具函数。

主要优势

  • 减少重复代码,无需手动导入
  • 提升开发效率
  • 支持 TypeScript 类型提示
  • 支持 ESLint 配置

三、安装

1
2
3
4
5
npm install -D unplugin-auto-import
# 或
yarn add -D unplugin-auto-import
# 或
pnpm add -D unplugin-auto-import

四、基本配置

1. 配置 vite.config.ts

1
2
3
4
5
6
7
8
9
10
11
12
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import AutoImport from "unplugin-auto-import/vite";

export default defineConfig({
plugins: [
vue(),
AutoImport({
imports: ["vue", "vue-router", "pinia"],
}),
],
});

2. 使用效果

配置完成后,在Vue组件中可以直接使用自动导入的API,无需手动导入:

1
2
3
4
5
6
<script setup lang="ts">
// 不需要 import,直接使用
const count = ref(0)
const route = useRoute()
const store = defineStore('user', { ... })
</script>

五、TypeScript 配置

引入TypeScript时,需要进行额外的类型声明配置,否则会出现TS报错。

1. 生成类型声明文件

1
2
3
4
5
6
7
8
9
10
11
12
13
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import AutoImport from "unplugin-auto-import/vite";

export default defineConfig({
plugins: [
vue(),
AutoImport({
imports: ["vue", "vue-router", "pinia"],
dts: "src/types/auto-import.d.ts",
}),
],
});

2. tsconfig.json 配置

1
2
3
4
5
6
7
8
9
10
{
"include": [
"src/**/*.js",
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.jsx",
"src/**/*.vue",
"./src/types/auto-import.d.ts"
]
}

六、ESLint 配置

配置完成后,虽然可以正常使用API,但ESLint可能还会报错提示找不到变量。

1. 生成 ESLint 配置文件

1
2
3
4
5
6
AutoImport({
imports: ["vue", "vue-router", "pinia"],
eslintrc: {
enabled: true,
},
});

2. .eslintrc.js 中引入

1
2
3
4
module.exports = {
root: true,
extends: ["./.eslintrc-auto-import.json"],
};

七、imports 配置详解

1. 字符串形式(最简单)

1
2
3
AutoImport({
imports: ["vue", "vue-router", "pinia"],
});

2. 对象形式(精确控制)

1
2
3
4
5
6
7
8
9
AutoImport({
imports: [
"vue",
{
"vue-router": ["useRoute", "useRouter"],
"@vueuse/core": ["useMouse", "useFetch", "useLocalStorage"],
},
],
});

3. 带别名的导入

1
2
3
4
5
6
7
8
9
10
11
AutoImport({
imports: [
{
vue: [
"ref",
["computed", "computedRef"],
["onMounted", "onComponentMount"],
],
},
],
});

八、dirs 配置(自动导入自定义目录)

自动导入项目内部目录下的模块(工具函数、composables等)。

1. 基本用法

1
2
3
AutoImport({
dirs: ["./src/utils", "./src/composables"],
});

2. 使用 Glob 模式(支持子目录)

1
2
3
AutoImport({
dirs: ["./src/utils/**", "./src/composables/**", "./src/hooks/**/*.ts"],
});

九、resolvers 配置(动态解析器)

用于UI库的自动导入,如Element Plus、Vant等。

配合 Element Plus 使用

1
2
3
4
5
6
import AutoImport from "unplugin-auto-import/vite";
import { ElementPlusResolver } from "unplugin-vue-components/resolvers";

AutoImport({
resolvers: [ElementPlusResolver()],
});

文章作者: 栖桐听雨声
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 栖桐听雨声 !
  目录