zhangxiao
2024-08-20 e47b788ff5f5c699c682999c95da17eb284ca21d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/**
 * @name createVitePlugins
 * @description 封装plugins数组统一调用
 */
import type { Plugin } from "vite";
import vue from "@vitejs/plugin-vue";
import { ConfigSvgIconsPlugin } from "./modules/svg";
import { AutoImportDeps } from "./modules/autoImport";
import { AutoRegistryComponents } from "./modules/component";
import { ConfigRestartPlugin } from "./modules/restart";
import { ConfigVisualizerConfig } from "./modules/visualizer";
import { ConfigCompressPlugin } from "./modules/compress";
import VueSetupExtend from "vite-plugin-vue-setup-extend-plus";
import { vitePluginForArco } from "@arco-plugins/vite-vue";
import { AliUploadPlugin } from "@easyfe/vite-plugin-upload";
import versionPlugin from "./modules/version";
 
/**
 * 创建vite插件
 * @param params compress:是否开启打包压缩,analyzer:是否开启打包分析,envMap:构建传递的环境变量
 * @returns
 */
export function createVitePlugins(params: {
    envMap: Record<string, any>;
    uploadOption?: any;
    now: string;
}): (Plugin | Plugin[])[] {
    const vitePlugins: (Plugin | Plugin[])[] = [
        // vue支持
        vue(),
        // svg支持
        ConfigSvgIconsPlugin("src/assets/svg"),
        // 自动按需引入依赖
        AutoImportDeps(),
        // 自动按需引入组件
        AutoRegistryComponents(),
        // 监听配置文件改动重启
        ConfigRestartPlugin(),
        /**
         * 扩展setup插件,支持在script标签中使用name属性
         * usage: <script setup name="MyComp"></script>
         */
        VueSetupExtend(),
        vitePluginForArco({
            // theme: "@arco-themes/vue-easyfe"
        })
    ];
    // 上传oss
    if (params.envMap.VITE_APP_MODE !== "development" && params?.uploadOption) {
        vitePlugins.push(AliUploadPlugin(params.uploadOption));
    }
    // 代码压缩 .gzip之类
    else if (params.envMap.VITE_APP_COMPRESS) {
        vitePlugins.push(ConfigCompressPlugin(params.envMap.VITE_APP_COMPRESS));
    }
    // 依赖分析
    if (params.envMap.VITE_APP_MODE !== "development") {
        vitePlugins.push(versionPlugin({ version: params.now }));
        vitePlugins.push(ConfigVisualizerConfig());
    }
    return vitePlugins;
}