canteen_system/vite.config.ts

86 lines
2.3 KiB
TypeScript

import { defineConfig, loadEnv, UserConfigExport } from "vite";
import vueJsx from "@vitejs/plugin-vue-jsx";
import vue from "@vitejs/plugin-vue";
import * as path from "path";
const pathSrc = path.resolve(__dirname, "src");
// https://vitejs.dev/config/
// loadEnv对应加装环境中的变量
export default ({ mode }): UserConfigExport => {
// 我要加载哪一个环境的文件process.cwd()
const env: Record<string, string> = loadEnv(mode, process.cwd(), "");
return defineConfig({
define: {
__APP_ENV__: JSON.stringify(env),
},
base: "/",
plugins: [vue(), vueJsx()],
server: {
host: "0.0.0.0",
port: env["VITE_APP_PORT"] as unknown as number,
open: false,
proxy: {
[env["VITE_APP_BASE_API"]]: {
target: env["VITE_APP_PROXY_URL"],
changeOrigin: true,
secure: false,
rewrite: (path) =>
path.replace(RegExp(`^${env["VITE_APP_BASE_API"]}`), ""),
},
},
},
build: {
outDir: "dist",
target: "modules",
chunkSizeWarningLimit: 1500,
minify: "terser",
terserOptions: {
compress: {
//生产环境时移除console
drop_console: env["VITE_DROP_CONSOLE"] as unknown as boolean,
drop_debugger: env["VITE_DROP_CONSOLE"] as unknown as boolean,
},
},
rollupOptions: {
output: {
manualChunks(id) {
if (id.includes("node_modules")) {
return id
.toString()
.split("node_modules/")[1]
.split("/")[0]
.toString();
}
},
chunkFileNames(chunkInfo) {
const facadeModuleId = chunkInfo.facadeModuleId
? chunkInfo.facadeModuleId.split("/")
: [];
const fileName =
facadeModuleId[facadeModuleId.length - 2] || "[name]";
return `js/${fileName}/[name].[hash].js`;
},
},
},
},
resolve: {
alias: {
"@": pathSrc,
},
},
css: {
preprocessorOptions: {
scss: {
charset: false,
// 全局css变量
additionalData: `
@import "@/assets/scss/variable.scss";
@import "@/assets/scss/mixin.scss";
`,
},
},
},
});
};