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: `` }, }), ], server: { host: "0.0.0.0", port: 8080, }, base: "./", resolve: { extensions: [".js", ".vue"], alias: [{ find: /^@\/(.*)$/, replacement: "/src/$1" }], }, }; });