ByteNoteByteNote

字节笔记本

2026年2月19日

unplugin-auto-import:按需自动导入 API 的构建工具插件

API中转
¥120

本文介绍 unplugin-auto-import,一个为 Vite、Webpack、Rollup 等构建工具提供按需自动导入 API 功能的插件。

unplugin-auto-import 简介

unplugin-auto-import 是由 Anthony Fu (antfu) 开发的开源插件,基于 unplugin 构建,为 Vite、Webpack、Rspack、Rollup 和 esbuild 提供按需自动导入 API 的功能。该项目在 GitHub 上拥有 3.8k stars 和 218 forks,采用 MIT 许可证。

核心定位:Auto import APIs on-demand for Vite, Webpack and Rollup

核心功能

该插件的核心价值在于消除重复的 import 语句,让开发者可以直接使用 API 而无需手动导入:

使用前后对比

Vue 示例 - 使用前:

ts
import { computed, ref } from 'vue'
const count = ref(0)
const doubled = computed(() => count.value * 2)

Vue 示例 - 使用后:

ts
const count = ref(0)
const doubled = computed(() => count.value * 2)

React 示例 - 使用前:

tsx
import { useState } from 'react'
export function Counter() {
  const [count, setCount] = useState(0)
  return <div>{ count }</div>
}

React 示例 - 使用后:

tsx
export function Counter() {
  const [count, setCount] = useState(0)
  return <div>{ count }</div>
}

安装方法

bash
npm i -D unplugin-auto-import

支持的工具链

工具导入路径
Viteunplugin-auto-import/vite
Rollupunplugin-auto-import/rollup
Rolldownunplugin-auto-import/rolldown
Webpackunplugin-auto-import/webpack
Rspackunplugin-auto-import/rspack
esbuildunplugin-auto-import/esbuild
Astrounplugin-auto-import/astro
Quasarunplugin-auto-import/vite

注意:Nuxt 已内置此功能,无需额外安装。

配置示例

Vite 配置

ts
// vite.config.ts
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'

export default defineConfig({
  plugins: [
    AutoImport({
      // 目标文件
      include: [
        /\.[tj]sx?$/,
        /\.vue$/,
        /\.vue\?vue/,
        /\.md$/,
      ],
      // 自动导入的预设
      imports: [
        // Vue
        'vue',
        // Vue Router
        'vue-router',
        // VueUse
        '@vueuse/core',
      ],
      // 生成类型声明文件
      dts: true,
      // 生成 ESLint 配置
      eslintrc: {
        enabled: true,
      },
    }),
  ],
})

Webpack 配置

js
// webpack.config.js
const AutoImport = require('unplugin-auto-import/webpack')

module.exports = {
  plugins: [
    AutoImport({
      imports: ['react', 'react-router'],
      dts: true,
    }),
  ],
}

核心配置选项

选项说明
include目标文件匹配模式,支持 .ts, .tsx, .js, .jsx, .vue, .md
imports全局导入注册,支持 presets 和自定义导入
dirs扫描指定目录自动导入
dts生成 TypeScript 声明文件,默认 ./auto-imports.d.ts
eslintrc生成 ESLint 配置文件
biomelintrc生成 Biome 配置文件
vueTemplate启用 Vue 模板内的自动导入
viteOptimizeDepsVite 依赖优化

预设支持

内置预设位于 src/presets,支持:

  • vue - Vue 3 Composition API
  • vue-router - Vue Router
  • @vueuse/core - VueUse 工具库
  • react - React Hooks
  • react-router - React Router
  • pinia - Pinia 状态管理
  • quasar - Quasar 框架
  • 自定义包预设 (packagePresets)

自定义导入

ts
AutoImport({
  imports: [
    // 预设
    'vue',
    // 自定义导入
    {
      // 从包导入
      'axios': [
        ['default', 'axios'],
      ],
      // 自定义模块
      '@/utils': [
        'formatDate',
        'parseJSON',
      ],
    },
  ],
})

目录扫描自动导入

ts
AutoImport({
  dirs: [
    // 扫描 composables 目录
    './src/composables/**',
    // 扫描 utils 目录
    './src/utils/**',
  ],
})

TypeScript 支持

启用 dts: true 自动生成类型声明文件:

ts
// auto-imports.d.ts(自动生成)
export {}
declare global {
  const ref: typeof import('vue')['ref']
  const computed: typeof import('vue')['computed']
  const watch: typeof import('vue')['watch']
  // ...
}

确保 auto-imports.d.ts 未被 tsconfig.json 排除。

ESLint 集成

ts
AutoImport({
  eslintrc: {
    enabled: true,
    filepath: './.eslintrc-auto-import.json',
    globalsPropValue: true,
  },
})

然后在 .eslintrc 中:

json
{
  "extends": ["./.eslintrc-auto-import.json"]
}

实际应用示例

Vue 3 项目

vue
<script setup>
// 无需导入,直接使用
const count = ref(0)
const doubled = computed(() => count.value * 2)
const router = useRouter()

function increment() {
  count.value++
}

// VueUse
const { x, y } = useMouse()
</script>

React 项目

tsx
function App() {
  // 无需导入 useState
  const [count, setCount] = useState(0)

  return (
    <button onClick={() => setCount(c => c + 1)}>
      Count: {count}
    </button>
  )
}

优势与注意事项

优势

  • 减少样板代码:无需重复编写 import 语句
  • 提升开发效率:直接使用熟悉的 API
  • TypeScript 友好:自动生成类型声明
  • 工具链广泛:支持主流构建工具
  • 灵活配置:支持预设、自定义导入、目录扫描

注意事项

  • 团队协作:需要确保团队成员了解自动导入机制
  • 代码可读性:新成员可能不清楚 API 来源
  • IDE 支持:需要正确配置类型声明文件

项目信息

总结

unplugin-auto-import 是一个实用的开发工具,通过自动导入机制显著减少样板代码,提升开发效率。其核心优势包括:

  • 广泛兼容:支持 Vite、Webpack、Rollup 等主流工具
  • TypeScript 原生支持:自动生成类型声明
  • 预设丰富:内置 Vue、React、VueUse 等常用预设
  • 灵活扩展:支持自定义导入和目录扫描
  • 生态成熟:基于 unplugin,与前端生态深度集成

对于使用 Vue 3、React 等现代前端框架的开发者来说,unplugin-auto-import 是提升开发体验的利器。

分享: