Vue 3 工程化:用 unplugin 自动导入 API 与组件,砍掉 import 噪声

test12026-10-135 次阅读

import 噪声是怎么堆积的

每个 Vue 组件顶部都写 ref、computed、onMounted,每个 UI 组件再写一遍 import。VueUse、Element Plus 这类库更是重灾区,一个文件顶部能堆十几行 import。unplugin 系列能在编译期自动补上这些导入,源码里直接写名字即可,编译产物与手写 import 完全一致。

装两个插件

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

在 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({
      imports: ["vue", "vue-router", "pinia"],
      resolvers: [ElementPlusResolver()],
      dts: "src/auto-imports.d.ts",
    }),
    Components({
      resolvers: [ElementPlusResolver()],
      dts: "src/components.d.ts",
    }),
  ],
});

组件里去掉 import

配置完成后下面这段代码不需要手写任何 import 就能跑,ref、useRoute 自动可用,el-button 按文件按需引入。

<script setup lang="ts">
const count = ref(0);
const doubled = computed(() => count.value * 2);
const route = useRoute();

onMounted(() => {
  console.log(route.path);
});
</script>

<template>
  <el-button @click="count++">{{ doubled }}</el-button>
</template>

类型安全不能丢

dts 选项会生成类型声明文件,ref、useRoute 等自动拥有类型提示,TS 不会报未定义。团队成员 clone 后首次运行由插件自动生成,无需手动维护。

小结

  • AutoImport 管 API(vue、router、pinia 以及第三方 composable)。
  • Components 管组件(按文件名或 resolver 做按需引入)。
  • 生成 dts 之后,类型提示与手写 import 完全一致,不牺牲类型安全。
T

test1

文章作者

import 噪声是怎么堆积的 每个 Vue 组件顶部都写 ref、computed、onMounted,每个 UI...

分类
技术
发布时间
2026-10-13
字数
约 1343 字
阅读
5 次