import { fileURLToPath, URL } from "node:url"; import { defineConfig, loadEnv } from "vite"; import vue from "@vitejs/plugin-vue"; import vueJsx from "@vitejs/plugin-vue-jsx"; import AutoImport from "unplugin-auto-import/vite"; import Components from "unplugin-vue-components/vite"; import { VantResolver } from "unplugin-vue-components/resolvers"; import postcssPxConversion from "postcss-px-conversion"; import legacy from "@vitejs/plugin-legacy"; import { setCrossoriginUseCredentials, injectHtmlVars, proxyConfig } from "./vite.util"; export default defineConfig(({ mode }) => { const envDir = `${process.cwd()}/env`; const env = loadEnv(mode, envDir, "NODE_"); return { base: "./", envDir: "./env", plugins: [ vue(), vueJsx(), AutoImport({ imports: ["vue", "pinia", { "vue-router": [ "useLink", "useRoute", "useRouter", "onBeforeRouteLeave", "onBeforeRouteUpdate", "createRouter", "createWebHistory", "createWebHashHistory" ] }], eslintrc: { // 会在项目根目录自动生成.eslintrc-auto-import.json enabled: true } }), Components({ resolvers: [VantResolver()] }), legacy({ targets: ["chrome 87"] }), setCrossoriginUseCredentials(), injectHtmlVars(env) ], resolve: { alias: { "@": fileURLToPath(new URL("./src", import.meta.url)) } }, css: { postcss: { plugins: [ postcssPxConversion({ viewportWidth: 375 }) ] } }, server: { proxy: proxyConfig(env) }, build: { modulePreload: false } }; });