项目中自动引入神器 unplugin-auto-import/unplugin-vue-components

646 阅读2分钟

unplugin-auto-import

unplugin-auto-import 是一个用于** Vue 3**的插件,它可以自动导入你在代码中使用的 Vue Composition API 函数(如 ref, reactive, computed 等)以及来自其他库的函数(如 Vue Router 的 useRoute, useRouter,或者 Pinia 的 defineStore 等)。

插件->减少样板代码和提高开发效率。Vue 3** 开发时每个组件中导入许多函数。unplugin-auto-import 通过自动检测你的代码并为你导入必要的函数来解决这个问题。

安装

npm install unplugin-auto-import --save-dev

配置

vite.config.ts

import { defineConfig } from 'vite'  
import AutoImport from 'unplugin-auto-import/vite'
  
export default defineConfig({  
  plugins: [  
    AutoImport({  
      // 你可以指定要自动导入的库  
      imports: [  
        'vue',  
        'vue-router',
        {
            vuex: ['useStore'],
        },
        // ...其他库  
      ],
       // 使用typescript,需要指定生成对应的d.ts文件或者设置为true,生成默认导入d.ts文件
      dts: 'types/auto-imports.d.ts',
      // 配置本地目录 自动引入
      dirs: ['./src/**'],
      // 你可以指定要排除的导入  
      eslint: {  
        // 如果你正在使用 ESLint,这个选项将生成相应的 ESLint 规则  
        inheritEnv: true,  
        // 如果你想禁用 ESLint 规则,可以设置为 false  
        // disabled: true,  
      },  
    }),  
    // ...其他插件  
  ],  
})

unplugin-auto-import 还支持 TypeScript,并且可以与 ESLint 集成,以在你不小心显式导入已自动导入的函数时发出警告。

配置详解

  • dirs: 目录下模块导出的自动导入。默认情况下,它只扫描目录下的一级模块,我们可以添加一些通配符来做筛选,限定到指定目录,或者到src 都可以做到自动引入,但是为了精确化查找,建议匹配越精准越好
  • dts: 生成相应.d.ts文件的文件路径。默认为“”/在本地安装“typescript”时自动导入.d.ts。
  • imports: 需要全局引入的
 AutoImport({
      dts: true, // 会在根目录生成auto-imports.d.ts,里面可以看到自动导入的api
      include: [/\.[tj]sx?$/, /\.vue$/], // 匹配的文件,也就是哪些后缀的文件需要自动引入
      imports: [ // 自动引入的api从这里找
        'vue',
        'vue-router',
        // 详细配置
        {
          '@vueuse/core': [
            // named imports
            'useMouse', // import { useMouse } from '@vueuse/core',
            // alias
            ['useFetch', 'useMyFetch'] // import { useFetch as useMyFetch } from '@vueuse/core',
          ],
          axios: [
            // default imports
            ['default', 'axios'] // import { default as axios } from 'axios',
          ]
        }
      ],
      // 解析器配置
      resolvers: [], // 第三方ui
      // 根据项目情况配置eslintrc,默认是不开启的
      eslintrc: {
        enabled: true // @default false
        // 下面两个是其他配置,默认即可
        // 输出一份json文件,默认输出路径为./.eslintrc-auto-import.json
        // filepath: './.eslintrc-auto-import.json', // @default './.eslintrc-auto-import.json'
        // globalsPropValue: true, // @default true 可设置 boolean | 'readonly' | 'readable' | 'writable' | 'writeable'
      }
    })

使用

现在,你可以在你的 Vue 组件中直接使用 Vue Composition API 的函数,而无需显式导入它们。

<template>  
  <div>{{ count }}</div>  
  <button @click="increment">Increment</button>  
</template>  
  
<script setup>  
// 不需要显式导入 ref 或 onMounted  
const count = ref(0)  
const increment = () => {  
  count.value++  
}  
</script>

unplugin-vue-components

安装

npm install unplugin-vue-components --save-dev

配置

在Vite的配置文件(vite.config.js)中配置插件

import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'
import Components from 'unplugin-vue-components/vite'
import { defineConfig } from 'vite'

export default defineConfig({
  plugins: [
    Components({
      dirs: ['src/components'], // 配置需要默认导入的自定义组件文件夹,该文件夹下的所有组件都会自动 import
      resolvers: [AntDesignVueResolver({ importStyle: false, resolveIcons: true })]
    })
  ]
})