unplugin-auto-import與unplugin-vue-components安裝問題解析
背景
unplugin-auto-import:為 Vite、Webpack、Rollup 和 esbuild 按需自動導(dǎo)入 API。支持 TypeScript。
unplugin-vue-components:Vue 的按需組件自動導(dǎo)入。
這兩個插件都是涉及到按需自動導(dǎo)入,所以我們在使用 Vue 和其對應(yīng)的 組件之類時,都可能會需要這兩個插件的幫助,幫助我們實(shí)現(xiàn)按需自動導(dǎo)入,避免全量引入的尷尬以及每個文件都要手動導(dǎo)入 API 的低效重復(fù)搬磚。
但是,在項(xiàng)目中使用 unplugin-auto-import 和 unplugin-vue-components 總會遇到的一些問題,在此特意匯總?cè)缦拢约疤峁┳詈蟮慕鉀Q辦法,希望幫助到有需要的人。
安裝
首先就是安裝,為啥推薦使用 pnpm ,在此就不贅述了(可自行去了解)。
pnpm add -D unplugin-auto-import pnpm add -D unplugin-vue-components
vite 版本
修改 vite.config.ts 文件內(nèi)容,在此以 ElementPlusResolver 為例,其他組件類同。
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()],
}),
問題1:自動導(dǎo)入的依然 eslint 報錯

現(xiàn)象:使用過程中會自動引入 Vue 相關(guān)組合 Api,是起作用的,但是 eslint 卻報錯,讓人很不舒服。
分析:起作用表示導(dǎo)入是正常可以用的,那么就是 eslint 的問題。但是怎么解決呢?是不是半天苦苦無果?
解決辦法:
在剛才的 vite.config.ts 文件中修改:
AutoImport({
imports: ["vue", "vue-router"],
resolvers: [ElementPlusResolver()],
// 新增如下
dts: "src/auto-import.d.ts",
eslintrc: {
enabled: true
},
}),
eslintrc 中 enabled 設(shè)置為 true,保存之后會隨即在跟目錄下生成 .eslintrc-auto-import.json 文件。
{
"globals": {
"EffectScope": true,
"computed": true,
"createApp": true,
"customRef": true,
"defineAsyncComponent": true,
"defineComponent": true,
"effectScope": true,
"getCurrentInstance": true,
"getCurrentScope": true,
"h": true,
"inject": true,
"isProxy": true,
"isReactive": true,
"isReadonly": true,
"isRef": true,
"markRaw": true,
"nextTick": true,
"onActivated": true,
"onBeforeMount": true,
"onBeforeRouteLeave": true,
"onBeforeRouteUpdate": true,
"onBeforeUnmount": true,
"onBeforeUpdate": true,
"onDeactivated": true,
"onErrorCaptured": true,
"onMounted": true,
"onRenderTracked": true,
"onRenderTriggered": true,
"onScopeDispose": true,
"onServerPrefetch": true,
"onUnmounted": true,
"onUpdated": true,
"provide": true,
"reactive": true,
"readonly": true,
"ref": true,
"resolveComponent": true,
"resolveDirective": true,
"shallowReactive": true,
"shallowReadonly": true,
"shallowRef": true,
"toRaw": true,
"toRef": true,
"toRefs": true,
"triggerRef": true,
"unref": true,
"useAttrs": true,
"useCssModule": true,
"useCssVars": true,
"useLink": true,
"useRoute": true,
"useRouter": true,
"useSlots": true,
"watch": true,
"watchEffect": true,
"watchPostEffect": true,
"watchSyncEffect": true
}
}
然后將這個文件引入 .eslintrc.cjs
extends: [
// ...
'./.eslintrc-auto-import.json'
]
到此,該問題就完美解決了。
問題2: 自動生成的 components.d.ts 文件內(nèi)容有報錯

解決辦法:
修改 .d.ts 文件生成目錄
Components({
resolvers: [ElementPlusResolver()],
// 新增如下
dts: 'src/components.d.ts'
}),
到此該問題也就 完美解決了。
最后
希望大家如果遇到上述問題,可以在掘金里邊搜到這里的解決辦法,幫助到大家。
同時如果大家項(xiàng)目中遇到其他什么問題,也可以在一起討論找解決辦法,更多關(guān)于unplugin-auto-import unplugin-vue-components的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
利用Vue3實(shí)現(xiàn)可復(fù)制表格的方法詳解
表格是前端非常常用的一個控件,本文主要為大家介紹了Vue3如何實(shí)現(xiàn)一個簡易的可以復(fù)制的表格,文中的示例代碼講解詳細(xì),需要的可以參考一下2022-12-12
如何在 Vite 項(xiàng)目中自動為每個 Vue 文件導(dǎo)入 base.les
在Vite配置中通過添加css.preprocessorOptions實(shí)現(xiàn)自動導(dǎo)入base.less,簡化Vue組件的樣式設(shè)置,提高代碼的可維護(hù)性,感興趣的朋友跟隨小編一起看看吧2024-09-09
element-ui?form表單的動態(tài)rules校驗(yàn)功能實(shí)現(xiàn)
在vue項(xiàng)目中,有時候可能會用到element-ui?form表單的動態(tài)rules校驗(yàn),這篇文章主要介紹了element-ui form表單的動態(tài)rules校驗(yàn),我們可以巧妙的運(yùn)用element-ui form表單里面form-item的校驗(yàn)規(guī)則來處理,本文結(jié)合實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
Vue3 directive自定義指令內(nèi)部實(shí)現(xiàn)示例
這篇文章主要為大家介紹了Vue3 directive自定義指令內(nèi)部實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
vue-cli如何修改打包項(xiàng)目結(jié)構(gòu)及前綴
這篇文章主要介紹了vue-cli如何修改打包項(xiàng)目結(jié)構(gòu)及前綴問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
vue2.0中click點(diǎn)擊當(dāng)前l(fā)i實(shí)現(xiàn)動態(tài)切換class
本篇文章主要介紹了vue2.0中click點(diǎn)擊當(dāng)前l(fā)i實(shí)現(xiàn)動態(tài)切換class ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
vue實(shí)現(xiàn)百度搜索下拉提示功能實(shí)例
這篇文章主要介紹了vue實(shí)現(xiàn)百度搜索下拉提示功能實(shí)例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06

