111
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
import AutoImport from 'unplugin-auto-import/vite';
|
||||
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
|
||||
export default function createAutoImport() {
|
||||
return AutoImport({
|
||||
resolvers: [ElementPlusResolver()],
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import Components from 'unplugin-vue-components/vite';
|
||||
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
|
||||
export default function createComponents() {
|
||||
return Components({
|
||||
// dts: true, // enabled by default if `typescript` is installed
|
||||
dts: 'src/components.d.ts',
|
||||
resolvers: [ElementPlusResolver()],
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
import { PluginOption } from 'vite';
|
||||
import compression from 'vite-plugin-compression';
|
||||
|
||||
export default function createCompression(env: Record<string, string>) {
|
||||
const { VITE_BUILD_COMPRESS } = env;
|
||||
const plugin: PluginOption[] = [];
|
||||
if (VITE_BUILD_COMPRESS) {
|
||||
const compressList = VITE_BUILD_COMPRESS.split(',');
|
||||
if (compressList.includes('gzip')) {
|
||||
// http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件
|
||||
plugin.push(
|
||||
compression({
|
||||
ext: '.gz',
|
||||
deleteOriginFile: false,
|
||||
})
|
||||
);
|
||||
}
|
||||
if (compressList.includes('brotli')) {
|
||||
plugin.push(
|
||||
compression({
|
||||
ext: '.br',
|
||||
algorithm: 'brotliCompress',
|
||||
deleteOriginFile: false,
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
return plugin;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import vue from '@vitejs/plugin-vue';
|
||||
|
||||
import createAutoImport from './auto-import';
|
||||
import createComponents from "./components";
|
||||
import createSvgIcon from './svg-icon';
|
||||
import createCompression from './compression';
|
||||
import createSetupExtend from './setup-extend';
|
||||
import { PluginOption } from 'vite';
|
||||
import { webUpdateNotice } from '@plugin-web-update-notification/vite'
|
||||
|
||||
export default function createVitePlugins(viteEnv: Record<string, string>, isBuild = false) {
|
||||
const vitePlugins: PluginOption[] = [vue(), webUpdateNotice({
|
||||
versionType: 'build_timestamp',//'git_commit_hash' | 'pkg_version' | 'build_timestamp' | 'custom'
|
||||
notificationProps: {
|
||||
title: '系统升级通知',
|
||||
description: '检测到当前系统版本已更新,请刷新页面后使用。',
|
||||
buttonText: '刷新',
|
||||
dismissButtonText: '忽略'
|
||||
}
|
||||
})];
|
||||
vitePlugins.push(createAutoImport());
|
||||
vitePlugins.push(createComponents());
|
||||
vitePlugins.push(createSetupExtend());
|
||||
vitePlugins.push(createSvgIcon(isBuild));
|
||||
isBuild && vitePlugins.push(...createCompression(viteEnv));
|
||||
return vitePlugins;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import setupExtend from 'vite-plugin-vue-setup-extend';
|
||||
|
||||
export default function createSetupExtend() {
|
||||
return setupExtend();
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons';
|
||||
import path from 'path';
|
||||
|
||||
export default function createSvgIcon(isBuild: boolean) {
|
||||
return createSvgIconsPlugin({
|
||||
iconDirs: [path.resolve(process.cwd(), 'src/assets/icons/svg')],
|
||||
symbolId: 'icon-[dir]-[name]',
|
||||
svgoOptions: isBuild,
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user