first commit
This commit is contained in:
41
config/unplugin/auto-import.ts
Normal file
41
config/unplugin/auto-import.ts
Normal file
@ -0,0 +1,41 @@
|
||||
/**
|
||||
* 自动引入API
|
||||
* */
|
||||
import AutoImport from 'unplugin-auto-import/vite';
|
||||
|
||||
import { ArcoResolver } from 'unplugin-vue-components/resolvers';
|
||||
import IconsResolver from 'unplugin-icons/resolver';
|
||||
|
||||
import { layoutsResolver } from '../utils';
|
||||
|
||||
export function configAutoImport() {
|
||||
return AutoImport({
|
||||
imports: [
|
||||
'vue',
|
||||
'vue-router',
|
||||
'pinia',
|
||||
'@vueuse/core',
|
||||
{
|
||||
dayjs: [['default', 'dayjs']],
|
||||
'lodash-es': ['cloneDeep', 'omit', 'pick'],
|
||||
'@/hooks': ['useModal'],
|
||||
},
|
||||
],
|
||||
resolvers: [
|
||||
ArcoResolver({
|
||||
resolveIcons: {
|
||||
enable: true,
|
||||
},
|
||||
}),
|
||||
IconsResolver({
|
||||
enabledCollections: [],
|
||||
}),
|
||||
layoutsResolver(),
|
||||
],
|
||||
eslintrc: {
|
||||
enabled: true,
|
||||
filepath: './config/unplugin/.eslintrc-auto-import.json',
|
||||
},
|
||||
dts: './config/unplugin/auto-imports.d.ts',
|
||||
});
|
||||
}
|
||||
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',
|
||||
});
|
||||
}
|
||||
14
config/unplugin/icons.ts
Normal file
14
config/unplugin/icons.ts
Normal file
@ -0,0 +1,14 @@
|
||||
/**
|
||||
* 自动引入 svg 图标
|
||||
* */
|
||||
import Icons from 'unplugin-icons/vite';
|
||||
import { FileSystemIconLoader } from 'unplugin-icons/loaders';
|
||||
|
||||
export function configIcons() {
|
||||
return Icons({
|
||||
compiler: 'vue3',
|
||||
customCollections: {
|
||||
i: FileSystemIconLoader('./src/assets', (svg) => svg.replace(/^<svg /, '<svg class="eo-i" ')),
|
||||
},
|
||||
});
|
||||
}
|
||||
3
config/unplugin/index.ts
Normal file
3
config/unplugin/index.ts
Normal file
@ -0,0 +1,3 @@
|
||||
export * from './auto-import';
|
||||
export * from './component';
|
||||
export * from './icons';
|
||||
Reference in New Issue
Block a user