Vue component auto-importing plugin for multiple build tools including Vite, Webpack, Rollup, and esbuild
—
Pre-built resolvers for popular Vue UI libraries including Element Plus, Ant Design Vue, Vuetify, Quasar, and many others. These resolvers handle component imports and style loading automatically.
Resolver for Element Plus components with automatic style importing and SSR support.
/**
* Element Plus component resolver
* @param options - Element Plus resolver configuration
* @returns Component resolver for Element Plus
*/
function ElementPlusResolver(options?: ElementPlusResolverOptions): ComponentResolver;
interface ElementPlusResolverOptions {
/** Import style css or sass with components */
importStyle?: boolean | "css" | "sass";
/** Use commonjs lib & source css or scss for ssr */
ssr?: boolean;
/** Specify element-plus version to load style */
version?: string;
/** Auto import for directives */
directives?: boolean;
/** Exclude component name, if match do not resolve the name */
exclude?: RegExp;
/** A list of component names that have no styles */
noStylesComponents?: string[];
/** Nightly version */
nightly?: boolean;
}Usage Examples:
// Basic usage
Components({
resolvers: [ElementPlusResolver()],
});
// With style importing
Components({
resolvers: [
ElementPlusResolver({
importStyle: "sass", // or 'css' or false
directives: true,
}),
],
});
// SSR configuration
Components({
resolvers: [
ElementPlusResolver({
ssr: true,
importStyle: "css",
}),
],
});Resolver for Element UI (Vue 2) components with automatic style importing.
/**
* Element UI component resolver for Vue 2
* @param options - Element UI resolver configuration
* @returns Component resolver for Element UI
*/
function ElementUiResolver(options?: ElementUiResolverOptions): ComponentResolver;
interface ElementUiResolverOptions {
/** Import style css or sass with components */
importStyle?: boolean | "css" | "sass";
/** Exclude component name patterns */
exclude?: RegExp;
}Usage Examples:
// Basic usage (Vue 2 projects)
Components({
resolvers: [ElementUiResolver()],
});
// With Sass styles
Components({
resolvers: [
ElementUiResolver({
importStyle: "sass",
}),
],
});
// Without styles
Components({
resolvers: [
ElementUiResolver({
importStyle: false,
}),
],
});Resolver for Ant Design Vue components with customizable style importing.
/**
* Ant Design Vue component resolver
* @param options - Ant Design Vue resolver configuration
* @returns Component resolver for Ant Design Vue
*/
function AntDesignVueResolver(options?: AntDesignVueResolverOptions): ComponentResolver;
interface AntDesignVueResolverOptions {
/** Import style css or less with components */
importStyle?: boolean | "css" | "less";
/** Resolve icon components */
resolveIcons?: boolean;
/** Import CSS files for components */
importCss?: boolean;
/** Import Less files for components */
importLess?: boolean;
/** Exclude component name patterns */
exclude?: string[];
}Usage Examples:
// Basic usage
Components({
resolvers: [AntDesignVueResolver()],
});
// With Less styles and icons
Components({
resolvers: [
AntDesignVueResolver({
importStyle: "less",
resolveIcons: true,
}),
],
});Resolver for Vuetify components with automatic style and labs component support.
/**
* Vuetify component resolver
* @param options - Vuetify resolver configuration
* @returns Component resolver for Vuetify
*/
function VuetifyResolver(options?: VuetifyResolverOptions): ComponentResolver;
interface VuetifyResolverOptions {
/** Import styles */
styles?: boolean;
/** Include Vuetify labs components */
labs?: boolean;
/** Custom theme configuration */
theme?: Record<string, any>;
}Usage Examples:
Components({
resolvers: [
VuetifyResolver({
styles: true,
labs: true,
}),
],
});Resolver for Quasar Framework components with automatic importing.
/**
* Quasar component resolver
* @param options - Quasar resolver configuration
* @returns Component resolver for Quasar
*/
function QuasarResolver(options?: QuasarResolverOptions): ComponentResolver;
interface QuasarResolverOptions {
/** Import Quasar styles */
importStyle?: boolean;
/** Auto-import Quasar directives */
autoImportComponentCase?: "camel" | "pascal" | "kebab";
}Resolver for Naive UI components with tree-shaking support.
/**
* Naive UI component resolver
* @param options - Naive UI resolver configuration
* @returns Component resolver for Naive UI
*/
function NaiveUiResolver(options?: NaiveUiResolverOptions): ComponentResolver;
interface NaiveUiResolverOptions {
/** Import styles */
importStyle?: boolean;
}Resolver for PrimeVue components with theme and style support.
/**
* PrimeVue component resolver
* @param options - PrimeVue resolver configuration
* @returns Component resolver for PrimeVue
*/
function PrimeVueResolver(options?: PrimeVueResolverOptions): ComponentResolver;
interface PrimeVueResolverOptions {
/** Import component styles */
importStyle?: boolean;
/** Import theme styles */
importTheme?: boolean;
/** PrimeVue prefix */
prefix?: string;
}Resolver for Arco Design Vue components.
/**
* Arco Design Vue component resolver
* @param options - Arco resolver configuration
* @returns Component resolver for Arco Design Vue
*/
function ArcoResolver(options?: ArcoResolverOptions): ComponentResolver;
interface ArcoResolverOptions {
/** Import component styles */
importStyle?: boolean | "css" | "less";
/** Import icon components */
resolveIcons?: boolean;
/** Component library prefix */
prefix?: string;
}Resolvers for mobile-focused Vue UI libraries.
/**
* Vant mobile UI resolver
*/
function VantResolver(options?: VantResolverOptions): ComponentResolver;
/**
* Varlet UI mobile resolver
*/
function VarletUIResolver(options?: VarletUIResolverOptions): ComponentResolver;
/**
* Ionic Vue resolver
*/
function IonicResolver(options?: IonicResolverOptions): ComponentResolver;
interface VantResolverOptions {
/** Import component styles */
importStyle?: boolean;
}
interface VarletUIResolverOptions {
/** Import component styles */
importStyle?: boolean;
/** Auto import directives */
directives?: boolean;
}
interface IonicResolverOptions {
/** Import Ionic styles */
importStyle?: boolean;
}Support for many other popular Vue UI libraries.
/**
* TDesign Vue resolver
*/
function TDesignResolver(options?: TDesignResolverOptions): ComponentResolver;
/**
* DevUI resolver
*/
function DevUiResolver(): ComponentResolver;
/**
* View UI resolver
*/
function ViewUiResolver(options?: ViewUiResolverOptions): ComponentResolver;
/**
* Bootstrap Vue resolver
*/
function BootstrapVueResolver(): ComponentResolver;
/**
* Headless UI resolver
*/
function HeadlessUiResolver(options?: HeadlessUiResolverOptions): ComponentResolver;
/**
* Inkline resolver
*/
function InklineResolver(): ComponentResolver;
/**
* VEUI resolver
*/
function VeuiResolver(options?: VeuiResolverOptions): ComponentResolver;
/**
* Layui Vue resolver
*/
function LayuiVueResolver(): ComponentResolver;
/**
* IduxResolver
*/
function IduxResolver(options?: IduxResolverOptions): ComponentResolver;Special resolvers for VueUse composables and components.
/**
* VueUse components resolver
* @param options - VueUse resolver configuration
* @returns Component resolver for VueUse components
*/
function VueUseComponentsResolver(options?: VueUseResolverOptions): ComponentResolver;
/**
* VueUse directives resolver
* @param options - VueUse directives configuration
* @returns Directive resolver for VueUse directives
*/
function VueUseDirectiveResolver(options?: VueUseDirectiveResolverOptions): ComponentResolver;
interface VueUseResolverOptions {
/** Import styles */
importStyle?: boolean;
}
interface VueUseDirectiveResolverOptions {
/** Auto import VueUse directives */
importDirectives?: boolean;
}Using multiple UI library resolvers together.
Usage Examples:
// Multiple UI libraries
Components({
resolvers: [
// Desktop UI
ElementPlusResolver({
importStyle: "sass",
}),
AntDesignVueResolver({
importStyle: "less",
}),
// Mobile UI
VantResolver({
importStyle: true,
}),
// Utility libraries
VueUseComponentsResolver(),
VueUseDirectiveResolver(),
// Custom resolver as fallback
(name: string) => {
if (name.startsWith("Custom")) {
return { name, from: `@/components/${name}.vue` };
}
},
],
});Common patterns for configuring UI library resolvers.
Usage Examples:
// Environment-based configuration
const isDev = process.env.NODE_ENV === "development";
Components({
resolvers: [
ElementPlusResolver({
importStyle: isDev ? "sass" : "css", // Use Sass in dev, CSS in prod
directives: true,
}),
],
});
// Conditional resolvers based on features
const resolvers = [
ElementPlusResolver(),
];
// Add mobile resolver for mobile app
if (process.env.MOBILE_APP) {
resolvers.push(VantResolver());
}
Components({ resolvers });
// Themed configuration
Components({
resolvers: [
AntDesignVueResolver({
importStyle: "less", // Required for theme customization
}),
PrimeVueResolver({
importTheme: true,
prefix: "P", // PButton, PCard, etc.
}),
],
});Different approaches to importing component styles.
Usage Examples:
// No styles (manual import)
Components({
resolvers: [
ElementPlusResolver({
importStyle: false, // Import styles manually in main.ts
}),
],
});
// CSS imports (smaller bundle)
Components({
resolvers: [
ElementPlusResolver({
importStyle: "css", // Import pre-compiled CSS
}),
],
});
// Sass/Less imports (customizable)
Components({
resolvers: [
ElementPlusResolver({
importStyle: "sass", // Import source Sass for customization
}),
AntDesignVueResolver({
importStyle: "less", // Import source Less for theming
}),
],
});Install with Tessl CLI
npx tessl i tessl/npm-unplugin-vue-components