52 lines
2.0 KiB
TypeScript
52 lines
2.0 KiB
TypeScript
import { Plugin } from 'vite'
|
||
import AutoImport from 'unplugin-auto-import/vite'
|
||
import Components from 'unplugin-vue-components/vite'
|
||
import { ElementPlusResolver, VueUseComponentsResolver } from 'unplugin-vue-components/resolvers'
|
||
import CompressPlugin from 'vite-plugin-compression'
|
||
|
||
//自动导入插件
|
||
export default (plugins: Plugin[], isBuild: boolean) => {
|
||
plugins.push(
|
||
AutoImport({
|
||
// resolvers: [ElementPlusResolver()],
|
||
//定义element-plus api按需加载
|
||
imports: [
|
||
// 'vue','vue-router','pinia',
|
||
{
|
||
// '@/store/piniaAutoImport': ['useStore'],
|
||
}],
|
||
//composables目录文件按需加载
|
||
// dirs: ['src/composables'],
|
||
dts: 'types/autoImport.d.ts',
|
||
}),
|
||
Components({
|
||
resolvers: [
|
||
//element-plus组件按需导入
|
||
// ElementPlusResolver(),
|
||
VueUseComponentsResolver(),
|
||
//针对iconpark图标按需导入
|
||
(componentName) => {
|
||
if (componentName.startsWith('IconPark')) {
|
||
return { name: componentName.slice(8), from: '@icon-park/vue-next' }
|
||
}
|
||
},
|
||
],
|
||
extensions: ['vue', 'tsx'],
|
||
//按需加载的文件夹
|
||
dirs: ['src/components'],
|
||
//组件名称包含目录,防止同名组件冲突
|
||
directoryAsNamespace: true,
|
||
//指定类型声明文件,为true时在项目根目录创建
|
||
dts: 'types/components.d.ts',
|
||
}),
|
||
CompressPlugin({
|
||
verbose: true, // 默认即可
|
||
disable: false, //开启压缩(不禁用),默认即可
|
||
deleteOriginFile: false, //删除源文件
|
||
threshold: 10240, //压缩前最小文件大小
|
||
algorithm: 'gzip', //压缩算法
|
||
ext: '.gz' //文件类型
|
||
})
|
||
)
|
||
}
|