From 9a2d410b5b8aa258195af25f64342e30307df59b Mon Sep 17 00:00:00 2001 From: IlyaL Date: Fri, 10 Jul 2026 02:55:08 +0800 Subject: [PATCH 1/2] feat: deprecate resolvers with official alternatives Co-authored-by: Codex --- README.md | 10 ++++++---- src/core/resolvers/layui-vue.ts | 1 + src/core/resolvers/prime-vue.ts | 2 ++ src/core/resolvers/tdesign.ts | 7 +++++++ src/core/resolvers/vant.ts | 2 ++ src/core/resolvers/varlet-ui.ts | 2 ++ 6 files changed, 20 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1ebe2536..5c4446ac 100644 --- a/README.md +++ b/README.md @@ -237,19 +237,21 @@ Supported Resolvers: - [Ant Design Vue](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/antdv.ts) - [Arco Design Vue](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/arco.ts) - [BootstrapVue](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/bootstrap-vue.ts) +- [BootstrapVueNext](https://bootstrap-vue-next.github.io/bootstrap-vue-next/docs) - [Element Plus](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/element-plus.ts) - [Headless UI](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/headless-ui.ts) - [IDux](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/idux.ts) - [Inkline](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/inkline.ts) - [Ionic](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/ionic.ts) +- [Layui Vue](https://www.layui-vue.com/zh-CN/guide/getStarted) - [Naive UI](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/naive-ui.ts) -- [Prime Vue](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/prime-vue.ts) +- [Prime Vue](https://primevue.dev/autoimport/) - [Quasar](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/quasar.ts) -- [TDesign](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/tdesign.ts) +- [TDesign](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/auto-import-resolver/README.md) - [`@tdesign-vue-next/auto-import-resolver`](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/auto-import-resolver/README.md) - TDesign's own auto-import resolver -- [Vant](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/vant.ts) +- [Vant](https://github.com/youzan/vant/blob/main/packages/vant-auto-import-resolver/README.md) - [`@vant/auto-import-resolver`](https://github.com/youzan/vant/blob/main/packages/vant-auto-import-resolver/README.md) - Vant's own auto-import resolver -- [Varlet UI](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/varlet-ui.ts) +- [Varlet UI](https://github.com/varletjs/varlet/blob/dev/packages/varlet-import-resolver/README.md) - [`@varlet/import-resolver`](https://github.com/varletjs/varlet/blob/dev/packages/varlet-import-resolver/README.md) - Varlet's own auto-import resolver - [VEUI](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/veui.ts) - [View UI](https://github.com/antfu/unplugin-vue-components/blob/main/src/core/resolvers/view-ui.ts) diff --git a/src/core/resolvers/layui-vue.ts b/src/core/resolvers/layui-vue.ts index b5d29c3a..1dcf2a05 100644 --- a/src/core/resolvers/layui-vue.ts +++ b/src/core/resolvers/layui-vue.ts @@ -159,6 +159,7 @@ function resolveComponent(importName: string, options: LayuiVueResolverOptions): * * @link http://www.layui-vue.com/ for layui-vue * + * @deprecated use `import { LayuiVueResolver } from '@layui/unplugin-vue-components/resolvers'` instead */ export function LayuiVueResolver( options: LayuiVueResolverOptions = {}, diff --git a/src/core/resolvers/prime-vue.ts b/src/core/resolvers/prime-vue.ts index c216e2e0..ac4171e2 100644 --- a/src/core/resolvers/prime-vue.ts +++ b/src/core/resolvers/prime-vue.ts @@ -143,6 +143,8 @@ export interface PrimeVueResolverOptions { * Resolver for PrimeVue - If you're using a component with the same tag as an native HTML element (e.g. button) the component must be in uppercase * * @link https://github.com/primefaces/primevue + * + * @deprecated use `import { PrimeVueResolver } from '@primevue/auto-import-resolver'` instead */ export function PrimeVueResolver(options: PrimeVueResolverOptions = {}): ComponentResolver { return { diff --git a/src/core/resolvers/tdesign.ts b/src/core/resolvers/tdesign.ts index 48ce59f6..b3ea3971 100644 --- a/src/core/resolvers/tdesign.ts +++ b/src/core/resolvers/tdesign.ts @@ -28,6 +28,13 @@ export interface TDesignResolverOptions { exclude?: FilterPattern } +/** + * Resolver for TDesign + * + * @link https://github.com/Tencent/tdesign-vue-next + * + * @deprecated use `import { TDesignResolver } from '@tdesign-vue-next/auto-import-resolver'` instead + */ export function TDesignResolver(options: TDesignResolverOptions = {}): ComponentResolver { const pluginList = ['DialogPlugin', 'LoadingPlugin', 'MessagePlugin', 'NotifyPlugin'] return { diff --git a/src/core/resolvers/vant.ts b/src/core/resolvers/vant.ts index f661a269..49113b28 100644 --- a/src/core/resolvers/vant.ts +++ b/src/core/resolvers/vant.ts @@ -31,6 +31,8 @@ function getSideEffects(dirName: string, options: VantResolverOptions): SideEffe * Resolver for Vant * * @link https://github.com/youzan/vant + * + * @deprecated use `import { VantResolver } from '@vant/auto-import-resolver'` instead */ export function VantResolver(options: VantResolverOptions = {}): ComponentResolver { return { diff --git a/src/core/resolvers/varlet-ui.ts b/src/core/resolvers/varlet-ui.ts index 31e400d3..b3a9599f 100644 --- a/src/core/resolvers/varlet-ui.ts +++ b/src/core/resolvers/varlet-ui.ts @@ -74,6 +74,8 @@ export function getResolved(name: string, options: VarletUIResolverOptions): Com * Resolver for VarletUI * * @link https://github.com/varletjs/varlet + * + * @deprecated use `import { VarletImportResolver } from '@varlet/import-resolver'` instead */ export function VarletUIResolver(options: VarletUIResolverOptions = {}): ComponentResolver[] { return [ From 3b29c4f3d74ff34c27914ac71c3e2092cc259ae6 Mon Sep 17 00:00:00 2001 From: IlyaL Date: Fri, 10 Jul 2026 11:14:29 +0800 Subject: [PATCH 2/2] feat: warn once for deprecated resolvers Co-authored-by: Codex --- src/core/resolvers/bootstrap-vue.ts | 3 +++ src/core/resolvers/layui-vue.ts | 4 +++- src/core/resolvers/prime-vue.ts | 3 +++ src/core/resolvers/tdesign.ts | 4 +++- src/core/resolvers/vant.ts | 4 +++- src/core/resolvers/varlet-ui.ts | 4 +++- src/core/utils.ts | 10 ++++++++++ 7 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/core/resolvers/bootstrap-vue.ts b/src/core/resolvers/bootstrap-vue.ts index f8f02bf7..7f3b408b 100644 --- a/src/core/resolvers/bootstrap-vue.ts +++ b/src/core/resolvers/bootstrap-vue.ts @@ -1,4 +1,5 @@ import type { ComponentResolver } from '../../types' +import { warnOnce } from '../utils' export interface BootstrapVueResolverOptions { /** @@ -94,6 +95,8 @@ export function BootstrapVueResolver(_options: BootstrapVueResolverOptions = {}) * @deprecated use `import { BootstrapVueNextResolver } from 'bootstrap-vue-next'` instead */ export function BootstrapVueNextResolver(_options: BootstrapVueResolverOptions = {}): Array { + warnOnce('BootstrapVueNextResolver is deprecated. Use `import { BootstrapVueNextResolver } from \'bootstrap-vue-next\'` instead.') + const options = { directives: true, ..._options } const resolvers: Array = [{ type: 'component', diff --git a/src/core/resolvers/layui-vue.ts b/src/core/resolvers/layui-vue.ts index 1dcf2a05..87a52bdb 100644 --- a/src/core/resolvers/layui-vue.ts +++ b/src/core/resolvers/layui-vue.ts @@ -1,6 +1,6 @@ import type { FilterPattern } from 'unplugin-utils' import type { ComponentInfo, ComponentResolver, SideEffectsInfo } from '../../types' -import { isExclude } from '../utils' +import { isExclude, warnOnce } from '../utils' const matchComponents = [ { @@ -164,6 +164,8 @@ function resolveComponent(importName: string, options: LayuiVueResolverOptions): export function LayuiVueResolver( options: LayuiVueResolverOptions = {}, ): ComponentResolver { + warnOnce('LayuiVueResolver is deprecated. Use `import { LayuiVueResolver } from \'@layui/unplugin-vue-components/resolvers\'` instead.') + return { type: 'component', resolve: (name: string) => { diff --git a/src/core/resolvers/prime-vue.ts b/src/core/resolvers/prime-vue.ts index ac4171e2..def1ad01 100644 --- a/src/core/resolvers/prime-vue.ts +++ b/src/core/resolvers/prime-vue.ts @@ -1,4 +1,5 @@ import type { ComponentResolver, SideEffectsInfo } from '../../types' +import { warnOnce } from '../utils' // @keep-sorted const components = [ @@ -147,6 +148,8 @@ export interface PrimeVueResolverOptions { * @deprecated use `import { PrimeVueResolver } from '@primevue/auto-import-resolver'` instead */ export function PrimeVueResolver(options: PrimeVueResolverOptions = {}): ComponentResolver { + warnOnce('PrimeVueResolver is deprecated. Use `import { PrimeVueResolver } from \'@primevue/auto-import-resolver\'` instead.') + return { type: 'component', resolve: (name: string) => { diff --git a/src/core/resolvers/tdesign.ts b/src/core/resolvers/tdesign.ts index b3ea3971..ec050f02 100644 --- a/src/core/resolvers/tdesign.ts +++ b/src/core/resolvers/tdesign.ts @@ -1,6 +1,6 @@ import type { FilterPattern } from 'unplugin-utils' import type { ComponentResolver } from '../../types' -import { isExclude } from '../utils' +import { isExclude, warnOnce } from '../utils' export interface TDesignResolverOptions { /** @@ -36,6 +36,8 @@ export interface TDesignResolverOptions { * @deprecated use `import { TDesignResolver } from '@tdesign-vue-next/auto-import-resolver'` instead */ export function TDesignResolver(options: TDesignResolverOptions = {}): ComponentResolver { + warnOnce('TDesignResolver is deprecated. Use `import { TDesignResolver } from \'@tdesign-vue-next/auto-import-resolver\'` instead.') + const pluginList = ['DialogPlugin', 'LoadingPlugin', 'MessagePlugin', 'NotifyPlugin'] return { type: 'component', diff --git a/src/core/resolvers/vant.ts b/src/core/resolvers/vant.ts index 49113b28..fca6f8fd 100644 --- a/src/core/resolvers/vant.ts +++ b/src/core/resolvers/vant.ts @@ -1,5 +1,5 @@ import type { ComponentResolver, SideEffectsInfo } from '../../types' -import { isSSR, kebabCase } from '../utils' +import { isSSR, kebabCase, warnOnce } from '../utils' const moduleType = isSSR ? 'lib' : 'es' @@ -35,6 +35,8 @@ function getSideEffects(dirName: string, options: VantResolverOptions): SideEffe * @deprecated use `import { VantResolver } from '@vant/auto-import-resolver'` instead */ export function VantResolver(options: VantResolverOptions = {}): ComponentResolver { + warnOnce('VantResolver is deprecated. Use `import { VantResolver } from \'@vant/auto-import-resolver\'` instead.') + return { type: 'component', resolve: (name: string) => { diff --git a/src/core/resolvers/varlet-ui.ts b/src/core/resolvers/varlet-ui.ts index b3a9599f..ef34b5b3 100644 --- a/src/core/resolvers/varlet-ui.ts +++ b/src/core/resolvers/varlet-ui.ts @@ -1,5 +1,5 @@ import type { ComponentResolver, ComponentResolveResult } from '../../types' -import { kebabCase } from '../utils' +import { kebabCase, warnOnce } from '../utils' export interface VarletUIResolverOptions { /** @@ -78,6 +78,8 @@ export function getResolved(name: string, options: VarletUIResolverOptions): Com * @deprecated use `import { VarletImportResolver } from '@varlet/import-resolver'` instead */ export function VarletUIResolver(options: VarletUIResolverOptions = {}): ComponentResolver[] { + warnOnce('VarletUIResolver is deprecated. Use `import { VarletImportResolver } from \'@varlet/import-resolver\'` instead.') + return [ { type: 'component', diff --git a/src/core/utils.ts b/src/core/utils.ts index 94a8f217..b8817bec 100644 --- a/src/core/utils.ts +++ b/src/core/utils.ts @@ -13,6 +13,16 @@ import { DISABLE_COMMENT } from './constants' export const isSSR = Boolean(process.env.SSR || process.env.SSG || process.env.VITE_SSR || process.env.VITE_SSG) +const warnedMessages = new Set() + +export function warnOnce(message: string): void { + if (warnedMessages.has(message)) + return + + warnedMessages.add(message) + console.warn(`[unplugin-vue-components] ${message}`) +} + export interface ResolveComponent { filename: string namespace?: string