first commit
This commit is contained in:
57
config/unplugin/component.ts
Normal file
57
config/unplugin/component.ts
Normal file
@ -0,0 +1,57 @@
|
||||
/**
|
||||
* 自动引入组件
|
||||
* */
|
||||
import { kebabCase } from 'unplugin-vue-components';
|
||||
import Components from 'unplugin-vue-components/vite';
|
||||
|
||||
import { ArcoResolver } from 'unplugin-vue-components/resolvers';
|
||||
import IconsResolver from 'unplugin-icons/resolver';
|
||||
|
||||
import { getSep, getPath, setResolve, layoutsResolver } from '../utils';
|
||||
|
||||
export function configComponents() {
|
||||
return Components({
|
||||
dirs: ['src/components'],
|
||||
extensions: ['vue'],
|
||||
resolvers: [
|
||||
ArcoResolver({
|
||||
resolveIcons: {
|
||||
enable: true,
|
||||
},
|
||||
sideEffect: true,
|
||||
}),
|
||||
IconsResolver({
|
||||
prefix: false,
|
||||
customCollections: ['i'],
|
||||
enabledCollections: [],
|
||||
}),
|
||||
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',
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user