2025-02-26 11:23:04 +08:00
|
|
|
import UnoCssIcons from '@unocss/preset-icons';
|
2025-02-24 22:45:14 +08:00
|
|
|
import vue from '@vitejs/plugin-vue';
|
|
|
|
import vueJsx from '@vitejs/plugin-vue-jsx';
|
2025-02-26 11:23:04 +08:00
|
|
|
import { presetIcons, presetUno } from 'unocss';
|
|
|
|
import UnoCSS from 'unocss/vite';
|
|
|
|
import type { PluginOption } from 'vite';
|
2025-02-27 22:37:19 +08:00
|
|
|
import { vitePluginFakeServer } from 'vite-plugin-fake-server';
|
2025-02-24 22:45:14 +08:00
|
|
|
import removeConsole from 'vite-plugin-remove-console';
|
2025-02-26 11:23:04 +08:00
|
|
|
import Inspector from 'vite-plugin-vue-inspector';
|
|
|
|
|
2025-02-24 22:45:14 +08:00
|
|
|
import { useCDN } from './cdn';
|
|
|
|
import { viteConsoleLog } from './info';
|
2025-02-27 22:37:19 +08:00
|
|
|
import { compressPack, report, wrapperEnv } from './utils';
|
2025-02-24 18:23:33 +08:00
|
|
|
|
2025-02-24 22:45:14 +08:00
|
|
|
export const plugins = (mode): PluginOption[] => {
|
2025-02-26 11:23:04 +08:00
|
|
|
return [
|
|
|
|
vue(),
|
|
|
|
vueJsx(),
|
|
|
|
Inspector(),
|
|
|
|
report(),
|
|
|
|
removeConsole(),
|
|
|
|
useCDN(mode),
|
|
|
|
viteConsoleLog(mode),
|
|
|
|
UnoCSS({
|
|
|
|
hmrTopLevelAwait: false,
|
|
|
|
inspector: true, // 控制台是否打印 UnoCSS inspector
|
|
|
|
presets: [
|
|
|
|
presetIcons({
|
|
|
|
extraProperties: {
|
|
|
|
display: 'inline-block',
|
|
|
|
'vertical-align': 'middle',
|
|
|
|
},
|
|
|
|
}),
|
|
|
|
UnoCssIcons({
|
|
|
|
prefix: 'i-',
|
|
|
|
extraProperties: {
|
|
|
|
display: 'inline-block',
|
|
|
|
},
|
|
|
|
}),
|
|
|
|
presetUno(),
|
|
|
|
],
|
|
|
|
}),
|
|
|
|
compressPack(mode),
|
2025-02-27 22:37:19 +08:00
|
|
|
useMock(mode),
|
2025-02-26 11:23:04 +08:00
|
|
|
];
|
2025-02-24 22:45:14 +08:00
|
|
|
};
|
2025-02-27 22:37:19 +08:00
|
|
|
|
|
|
|
/** MOCK 服务 */
|
|
|
|
const useMock = (mode) => {
|
|
|
|
const { VITE_MOCK_DEV_SERVER } = wrapperEnv(mode);
|
|
|
|
|
|
|
|
return VITE_MOCK_DEV_SERVER
|
|
|
|
? vitePluginFakeServer({
|
|
|
|
logger: true,
|
|
|
|
include: 'mock',
|
|
|
|
infixName: false,
|
|
|
|
enableProd: true, // 线上支持mock
|
|
|
|
})
|
|
|
|
: null;
|
|
|
|
};
|