92 lines
2.4 KiB
TypeScript

/**
* @name createVitePlugins
* @description 封装plugins数组统一调用
*/
import type { PluginOption } from 'vite';
import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
import { ConfigSvgIconsPlugin } from './svgIcons';
import { ConfigAutoComponentsPlugin } from './component';
import { ConfigAutoImportPlugin } from './autoImport';
import { ConfigMockPlugin } from './mock';
import { ConfigCompressPlugin } from './compress';
import { ConfigPagesPlugin } from './pages';
import { ConfigRestartPlugin } from './restart';
import { ConfigProgressPlugin } from './progress';
import { ConfigErudaPlugin } from './eruda';
import { ConfigImageminPlugin } from './imagemin';
import { ConfigVisualizerPlugin } from './visualizer';
import { ConfigSslPlugin } from './ssl';
import { ConfigQrcodePlugin } from './qrcode';
import { ConfigPwaPlugin } from './pwa';
export function createVitePlugins(env: ViteEnv, isBuild: boolean) {
const { VITE_USE_MOCK, VITE_USE_ERUDA, VITE_USE_COMPRESS, VITE_USE_REPORT, VITE_USE_HTTPS, VITE_USE_PWA } = env;
const vitePlugins: (PluginOption | PluginOption[])[] = [
// vue支持
vue(),
// JSX支持
vueJsx(),
];
// 自动按需引入组件
vitePlugins.push(ConfigAutoComponentsPlugin());
// 自动按需引入依赖
vitePlugins.push(ConfigAutoImportPlugin());
// 自动生成路由
vitePlugins.push(ConfigPagesPlugin());
// 监听配置文件改动重启
vitePlugins.push(ConfigRestartPlugin());
// 构建时显示进度条
vitePlugins.push(ConfigProgressPlugin());
// svg 图标
vitePlugins.push(ConfigSvgIconsPlugin(isBuild));
// eruda调试工具
if (VITE_USE_ERUDA) {
vitePlugins.push(ConfigErudaPlugin());
}
// 打包分析工具
if (VITE_USE_REPORT) {
vitePlugins.push(ConfigVisualizerPlugin());
}
// 数据 mock
if (VITE_USE_MOCK) {
vitePlugins.push(ConfigMockPlugin(isBuild));
}
if (VITE_USE_HTTPS) {
// 引入模拟 SSl 证书
vitePlugins.push(ConfigSslPlugin());
}
if (VITE_USE_PWA) {
vitePlugins.push(ConfigPwaPlugin());
}
if (isBuild) {
// 开启.gz压缩
if (VITE_USE_COMPRESS) {
vitePlugins.push(ConfigCompressPlugin());
// 图片压缩
vitePlugins.push(ConfigImageminPlugin());
}
}
if (!isBuild) {
// 开启二维码插件
vitePlugins.push(ConfigQrcodePlugin());
}
return vitePlugins;
}