首页 > 其他分享 >vue3插件(unplugin-auto-import自动引入的使用)

vue3插件(unplugin-auto-import自动引入的使用)

时间:2024-05-21 16:18:11浏览次数:14  
标签:插件 vue const auto ts unplugin typeof import

1. vite.config 文件里面

 1 import AutoImport from 'unplugin-auto-import/vite'
 2 
 3 plugins: [
 4   .......,
 5  AutoImport({
 6         include: [
 7           /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
 8           /\.vue$/,
 9           /\.vue\?vue/, // .vue
10           /\.md$/ // .md
11         ],
12         // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等
13         imports: [
14           'vue',
15           'vue-router',
16           {
17             '@vueuse/core': [
18               // named imports
19               'useMouse', // import { useMouse } from '@vueuse/core',
20               // alias
21               ['useFetch', 'useMyFetch'] // import { useFetch as useMyFetch } from '@vueuse/core',
22             ],
23 
24             axios: [['default', 'axios']],
25             'await-to-js': ['to']
26           }
27         ],
28         eslintrc: {
29           enabled: true, // 是否自动生成 eslint 规则,建议生成之后设置 false
30           filepath: './.eslintrc-auto-import.json' // 指定自动导入函数 eslint 规则的文件
31         },
32         resolvers: [ElementPlusResolver()],
33         dts: path.resolve('types', 'auto-imports.d.ts') // 指定自动导入函数TS类型声明文件路径
34       })   
35 ]

重新运行项目会生成一个auto-imports.d.ts的文件

文件内容如下:

 1 /* eslint-disable */
 2 /* prettier-ignore */
 3 // @ts-nocheck
 4 // noinspection JSUnusedGlobalSymbols
 5 // Generated by unplugin-auto-import
 6 export {}
 7 declare global {
 8   const EffectScope: typeof import('vue')['EffectScope']
 9   const ElMessage: typeof import('element-plus/es')['ElMessage']
10   const ElMessageBox: typeof import('element-plus/es')['ElMessageBox']
11   const axios: typeof import('axios')['default']
12   const computed: typeof import('vue')['computed']
13   const createApp: typeof import('vue')['createApp']
14   const customRef: typeof import('vue')['customRef']
15   const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
16   const defineComponent: typeof import('vue')['defineComponent']
17   const effectScope: typeof import('vue')['effectScope']
18   const getCurrentInstance: typeof import('vue')['getCurrentInstance']
19   const getCurrentScope: typeof import('vue')['getCurrentScope']
20   const h: typeof import('vue')['h']
21   const inject: typeof import('vue')['inject']
22   const isProxy: typeof import('vue')['isProxy']
23   const isReactive: typeof import('vue')['isReactive']
24   const isReadonly: typeof import('vue')['isReadonly']
25   const isRef: typeof import('vue')['isRef']
26   const markRaw: typeof import('vue')['markRaw']
27   const nextTick: typeof import('vue')['nextTick']
28   const onActivated: typeof import('vue')['onActivated']
29   const onBeforeMount: typeof import('vue')['onBeforeMount']
30   const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
31   const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
32   const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
33   const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
34   const onDeactivated: typeof import('vue')['onDeactivated']
35   const one rrorCaptured: typeof import('vue')['onErrorCaptured']
36   const onMounted: typeof import('vue')['onMounted']
37   const onRenderTracked: typeof import('vue')['onRenderTracked']
38   const onRenderTriggered: typeof import('vue')['onRenderTriggered']
39   const onScopeDispose: typeof import('vue')['onScopeDispose']
40   const onServerPrefetch: typeof import('vue')['onServerPrefetch']
41   const onUnmounted: typeof import('vue')['onUnmounted']
42   const onUpdated: typeof import('vue')['onUpdated']
43   const provide: typeof import('vue')['provide']
44   const reactive: typeof import('vue')['reactive']
45   const readonly: typeof import('vue')['readonly']
46   const ref: typeof import('vue')['ref']
47   const resolveComponent: typeof import('vue')['resolveComponent']
48   const shallowReactive: typeof import('vue')['shallowReactive']
49   const shallowReadonly: typeof import('vue')['shallowReadonly']
50   const shallowRef: typeof import('vue')['shallowRef']
51   const to: typeof import('await-to-js')['to']
52   const toRaw: typeof import('vue')['toRaw']
53   const toRef: typeof import('vue')['toRef']
54   const toRefs: typeof import('vue')['toRefs']
55   const toValue: typeof import('vue')['toValue']
56   const triggerRef: typeof import('vue')['triggerRef']
57   const unref: typeof import('vue')['unref']
58   const useAttrs: typeof import('vue')['useAttrs']
59   const useCssModule: typeof import('vue')['useCssModule']
60   const useCssVars: typeof import('vue')['useCssVars']
61   const useLink: typeof import('vue-router')['useLink']
62   const useMouse: typeof import('@vueuse/core')['useMouse']
63   const useMyFetch: typeof import('@vueuse/core')['useFetch']
64   const useRoute: typeof import('vue-router')['useRoute']
65   const useRouter: typeof import('vue-router')['useRouter']
66   const useSlots: typeof import('vue')['useSlots']
67   const watch: typeof import('vue')['watch']
68   const watchEffect: typeof import('vue')['watchEffect']
69   const watchPostEffect: typeof import('vue')['watchPostEffect']
70   const watchSyncEffect: typeof import('vue')['watchSyncEffect']
71 }
72 // for type re-export
73 declare global {
74   // @ts-ignore
75   export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
76 }

页面如果还有警告出来的话,需要加下includes配置

 在tsconfig.json 文件中添加:

 1 { 2 ......., 3 "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue", "types/**/*.d.ts"] 4 } 

此时在页面中不用单独引入ref、watch 等其他  就可以直接在页面使用

标签:插件,vue,const,auto,ts,unplugin,typeof,import
From: https://www.cnblogs.com/PengZhao-Mr/p/18204293

相关文章

  • auto_ptr和unique_ptr用法学习
    转自:https://blog.csdn.net/cpp_learner/article/details/118912592,chatgpt1.auto_ptr存在的问题复制或者赋值都会改变资源的所有权;auto_ptr 的设计有一些缺陷,特别是其所有权转移语义(transferofownership)。当一个 auto_ptr 被赋值或拷贝时,所有权会从源对象转移到目标对象......
  • MarkdownPad2渲染插件导致的崩溃AppCrash_MarkdownPad2.exe
        markdownPad2编辑较大文档时,莫名崩溃,内存占用也不是过高。查看AppCrash奔溃报告:  显示Awesomium插件程序故障。此程序是由markdownPad官方提供的渲染插件。访问其官网,尝试同时下载安装另一渲染程序:http://markdownpad.com/faq.html#livepreview-directx安装后......
  • Emacs cnblogs 插件使用
    今天用Emacs写了篇文章,想发到cnblogs博客上时遇到了"URL/HTTPError:200"的错误。原因是metaweblog的接口已经修改了,现在登录不上了,主要修改的参数有两个:cnblogs-server-url原来是:"http://www.cnblogs.com/%7Bcnblogs-blog-id%7D/services/metaweblog.aspx"......
  • 插件助手
    FittenCodevscode安装插件先注册登录智能补全问答生成代码选择代码,编辑代码GithubCopilotKiteTabNine......
  • 配置AutoFacManger.cs
    使用配置AutoFacManger的好处是不用我们像之前一样写一层注入一层,这样自动注入只要我们命名规范的话,就可以实现不在用去Program中手动后注入创建一个类里边写  publicclassAutoFacManger:Autofac.Module{///<summary>///自动注入......
  • emlog新浪上传插件+接口 V1.1
    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解`emlog新浪上传插件+接口V1.1日期:2018-4-21阿珏折腾代码浏览:3246次评论:12条emlog后台写文章新浪上传图片插件第一次写e......
  • fullcalendar-vue3插件实现时间资源图
    用的vue3+最新版本:官网链接:https://fullcalendar.io/demos效果如图:x轴为人员,y轴为当日的时间段:  1.安装引入npminstall--save@fullcalendar/core@fullcalendar/resource@fullcalendar/resource-timegrid package.json 2.附上代码<script>import{defin......
  • 自研WPF插件系统(沙箱运行及热插拔)
    前言插件化的需求主要源于对软件架构灵活性的追求,特别是在开发大型、复杂或需要不断更新的软件系统时,插件化可以提高软件系统的可扩展性、可定制性、隔离性、安全性、可维护性、模块化、易于升级和更新以及支持第三方开发等方面的能力,从而满足不断变化的业务需求和技术挑战。一......
  • 【Mybatis/Mybaits-Plus】【插件】插件执行时机
    1 前言我之前看过插件的执行过程:【Mybatis】【插件】Mybatis源码解析-插件机制,主要是通过一个 Executor的创建以及执行过程串了一下插件,我们这里简单回忆下:(1)Mybatis把所有的插件都放进了 InterceptorChain类里的 interceptors集合里(2)插件的两个时机:入场时机:插件是在......
  • [20240515]vim bccalc_XXX.vim使用插件简介.txt
    [20240515]vimbccalc_XXX.vim使用插件简介.txt--//这是我改写vim.org网站的一个调用bc做计算的一个插件bccalc.vim,感觉自己越写越复杂.做一个介绍,便于自己查阅.--//另外注意如果选择多行,结尾要像C语言一样使用分号(;).--//我已经统一在selectvisualnormal模式都是<leader>作......