Files
vue3-template-h5/vite.config.ts
T
2025-05-28 11:43:29 +08:00

76 lines
1.8 KiB
TypeScript

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
}
};
});