he wei
2024-04-15 c94f1afa786f297be86b01b49a641b2c0ad98b6e
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
63
64
65
66
67
import { defineConfig, loadEnv } from "vite";
import vue from "@vitejs/plugin-vue2";
import { nodePolyfills } from "vite-plugin-node-polyfills";
import { viteCommonjs } from "@originjs/vite-plugin-commonjs";
import babel from "vite-plugin-babel";
import dns from "dns";
 
import vueJsx from "@vitejs/plugin-vue2-jsx";
import langJsx from "vite-plugin-lang-jsx";
import path from "path";
import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
 
import { injectHtml } from "vite-plugin-html";
import { svgBuilder } from "./src/assets/js/svgBuilder";
 
dns.setDefaultResultOrder("verbatim");
export default defineConfig(({ mode }) => {
  // 加载环境变量,因为 vite 中不会加载以 VUE 开头的,我们得自己指定下
  const envPrefix = ["VUE"];
  const env = loadEnv(mode, process.cwd(), envPrefix);
  return {
    plugins: [
      // 必须写在vue、vueJsx之前
      langJsx()[1],
      vue(),
      vueJsx({}),
      viteCommonjs(),
      // 这里已经将src/icons/svg/下的svg全部导入,无需再单独导入
      svgBuilder("./src/icons/"),
      // createSvgIconsPlugin({
      //   iconDirs: [path.resolve(process.cwd(), "src/icons")], // icon存放的目录
      //   symbolId: "icon-[name]", // symbol的id
      //   // inject: "body-last", // 插入的位置
      //   // customDomId: "__svg__icons__dom__" // svg的id
      // }),
 
      babel({
        filter: /^.*node_modules\/element-ui.*\.js?$/,
      }),
      nodePolyfills({
        // Whether to polyfill `node:` protocol imports.
        protocolImports: true,
      }),
      injectHtml({
        minify: true,
        template: "./index.html",
        // entry: "./src/main.js", // 这个会帮我们注入入口 js 文件
        // entry: "src/main.js", // 这个会帮我们注入入口 js 文件
        data: {
          // 这是我们 index.html 用到的环境变量
          ...env,
          title: '',
          injectScript: `<script type="module" src="./src/main.js"></script>`
        },
      }),
    ],
    server: {
      host: "0.0.0.0",
      port: 8080,
    },
    base: "./",
    resolve: {
      extensions: [".js", ".vue"],
      alias: [{ find: /^@\/(.*)$/, replacement: "/src/$1" }],
    },
  };
});