Files
lingji-work-fe/config/unplugin/component.ts

52 lines
1.3 KiB
TypeScript

/**
* 自动引入组件
* */
import { kebabCase } from 'unplugin-vue-components';
import Components from 'unplugin-vue-components/vite';
import { ArcoResolver } from 'unplugin-vue-components/resolvers';
import { getSep, getPath, setResolve, layoutsResolver } from '../utils';
export function configComponents() {
return Components({
dirs: ['src/components'],
extensions: ['vue'],
resolvers: [
ArcoResolver({
resolveIcons: {
enable: true,
},
sideEffect: true,
}),
layoutsResolver(),
{
type: 'component',
resolve: (name) => {
const [prefix, folder] = kebabCase(name).split('-');
// 命名导出组件
if (prefix === 'eos') {
return {
name: name.slice(3),
from: getPath(`${getSep('src')}/components`, { folder }),
};
}
// 默认导出组件
if (prefix === 'eo') {
return setResolve(name);
}
if (prefix === 'base') {
return {
name: name.slice(4),
from: `${getSep('src')}/components/_base`,
};
}
},
},
],
directoryAsNamespace: true,
dts: './config/unplugin/components.d.ts',
});
}