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

前端 项目中 自动引入 神器

前言

在开发中,我们总喜欢站在巨人的肩膀上开发,比如用一些

框架:vue,react,

组件库:element,ant。

工具函数:axios,lodash

现在是模块化时代,我们也喜欢封装一些组件/工具库,但是都需要引入。v3更是改成composition API ,用那个引入那个,不知道你为此是否感到繁琐,今天就让我们来学习使用两款插件,解放双手,让我们有更多的摸鱼时间🦑

分类

以上的引入,总之分为两类,组件(自己封装的组件,三方组件) / 库,框架,工具方法 (vue,axios,或者自己封装的方法)

start(demo所用技术栈:vue3+vite+elementPlus+axios+lodash)

要新建一个 Vite + Vue 3 项目

  1. 安装 Vite:打开命令行工具(如终端或命令提示符),运行以下命令来全局安装 Vite:

npm install -g create-vite

  1. 创建 Vite + Vue 3 项目:在命令行中执行以下命令来创建一个新的 Vite + Vue 3 项目:

create-vite my-vue3-project

cd my-vue3-project

  1. 安装其他包

npm install axios lodash element-ui

  1. 启动开发服务器:进入项目目录后,运行以下命令启动 Vite 开发服务器:

npm run dev

主角 unplugin-auto-import( 自动导入API)

Install

npm i -D unplugin-auto-import

Configuration

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

export default defineConfig({
  plugins: [
    AutoImport({ /* options */ }),
  ],
})
options 里面可以添加一些配置

image.png

配置详解
  1. dirs: 目录下模块导出的自动导入。默认情况下,它只扫描目录下的一级模块,我们可以添加一些通配符来做筛选,限定到指定目录,或者到src 都可以做到自动引入,但是为了精确化查找,建议匹配越精准越好
 // 配置本地目录 自动引入
  dirs: ['./src/utils/**', './src/stores/**'],
 //dirs: ['./src/**'],
  1. dts: 生成相应.d.ts文件的文件路径。默认为“”/在本地安装“typescript”时自动导入.d.ts。
 dts: './auto-imports.d.ts',

image.png
3. imports: 需要全局引入的

事例

without

import { computed, ref } from 'vue'

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

with

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

without

import {f1} from '@/utils'
f1();

with

f1();

without

import {concat} from 'lodash';
console.log(concat([1, 2], [3]))

with

console.log(concat([1, 2], [3]))

without

import { useState } from 'react'

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

with

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

主角 unplugin-vue-components( 自动导入组件)

Install

npm i -D unplugin-vue-components

Configuration

这里我测试了一下,就算什么也不写,Components默认会自动引入 /src/components 下的文件

// vite.config.ts
import Components from 'unplugin-vue-components/vite'

export default defineConfig({
  plugins: [
    Components({ /* options */ }),
  ],
})

你也可以再配置一些想自动引入的组件

dirs: ['./src/components', './src/index/components'],

如果害怕组件重名,可以加一个directoryAsNamespace的选项,这样自动导入的组件名称 包含目录 ,就会防止命名冲突

options 里面可以添加一些配置

image.png

  • 三方组件,也可以在这里进行自动引入
 import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
 
    Components({
      // vue-components 内置了前端主流的resolve element antd
      resolvers: [ElementPlusResolver()],
      dirs: ['src/components'],
      // 组件名称 包含目录 ,防止命名冲突
      directoryAsNamespace: true,
    }),

事例

without

image.png

观测

  • 自动引入多了,就会分不清那个文件对哪些库/组件进行了引入,那这个时候需要一个插件帮我们看看引用关系

Install

npm i -D vite-plugin-inspect

Since vite-plugin-inspect@v0.7.0, Vite v3.1 or above is required.

Add plugin to your vite.config.ts:

// vite.config.ts
import Inspect from 'vite-plugin-inspect'

export default {
  plugins: [
    Inspect()
  ],
}

Then run npm run dev and visit localhost:5173/__inspect/ to inspect the modules.

image.png

image.png

学习链接

视频:

  1. https://www.bilibili.com/video/BV1ty4y1c7g4/?spm_id_from=333.337.search-card.all.click

  2. https://www.bilibili.com/video/BV19a411k7tg/?spm_id_from=333.337.search-card.all.click&vd_source=de85848cf7ccb9ecd55e0dd26c275613

  3. https://www.bilibili.com/video/BV1Sa41147wA/?spm_id_from=333.880.my_history.page.click&vd_source=de85848cf7ccb9ecd55e0dd26c275613

文档:

  1. 自动引入分析插件 https://www.npmjs.com/package/vite-plugin-inspect
  2. 自动引入api插件 https://www.npmjs.com/package/unplugin-auto-import
  3. 自动引入组件 https://www.npmjs.com/package/unplugin-vue-components

不止步于vite,其他构建工具的引入,可详看官网配置(详细看完官网,觉得这篇文写的挺水的🤣🤣🤣🤣🤣🤣🤣🤣🤣🤣)

image.png
最后送上测试配置

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
import Inspect from 'vite-plugin-inspect';

export default defineConfig({
  plugins: [
    vue(),
    Inspect(),
    AutoImport({
      imports: [
        // auto-import 内置 vue vue-router react 常见基本库的引入规则
        //axios lodash
        'vue',
        'vue-router',
        'react'
        {
          lodash: [
            // import {concat} from 'lodash'
            'concat',
            // import {compact as cp} from 'lodash'
            ['compact', 'cp'],
          ],
          axios: [
            [
              // import axios from 'axios'
              // import {default as axios } from 'axios'
              'default',
              'axios',
            ],
          ],
        },
      ],
      // 配置本地目录 自动引入
      dirs: ['./src/**'],
      // dirs: ['./src/utils/**'],
    }),
    Components({
      // vue-components 内置了前端主流的resolve element antd
      resolvers: [ElementPlusResolver()],
      // dirs: ['./src/components'], // 默认
      dirs: ['src/components'],
      // 组件名称 包含目录 ,防止命名冲突
      directoryAsNamespace: true,
      // dirs: ['./src/components', './src/index/components'],
    }),
  ],
  // 以src 为根路径配置 @
  resolve: {
    alias: {
      '@': '/src',
    },
  },
});

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
unplugin-vue-components和unplugin-auto-import是两个插件,用于在整合element-plus时进行自动导入模块和引用。你可以通过npm安装这两个插件,命令为npm install -D unplugin-vue-components unplugin-auto-import。 unplugin-vue-components是一个用于Vite、Webpack、Rollup和esbuild的插件,它可以按需自动导入API,并且支持TypeScript。 unplugin-auto-import也是一个用于Vite、Webpack、Rollup和esbuild的插件,它可以自动导入所需的模块。 在使用这两个插件时,你需要在vite.config.ts文件进行一些修改。比如,你可以按照以下方式导入ElementPlusResolver,并在resolvers配置它: import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' AutoImport({ imports: ["vue", "vue-router"], resolvers: [ElementPlusResolver()], }) Components({ resolvers: [ElementPlusResolver()], }) 注意,尽管使用了这两个插件进行自动导入,但仍然可能出现eslint报错的情况。这可能是由于eslint配置或其他插件的问题。你可以检查eslint的配置文件以及其他相关插件的设置,以解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [unplugin-auto-import 和 unplugin-vue-components 的正确使用方式](https://blog.csdn.net/goodcto/article/details/130022782)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [unplugin-auto-import 和 unplugin-vue-components](https://blog.csdn.net/Android062005/article/details/128684495)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值