import { defineConfig, loadEnv } from "vite";
import vue from "@vitejs/plugin-vue2";
import federation from "@originjs/vite-plugin-federation";
import topLevelAwait from "vite-plugin-top-level-await";
export default defineConfig(({ mode }) => {
const PROCESS_CONSTAINT = loadEnv(mode, process.cwd());
const VITE_PUBLIC_PATH = PROCESS_CONSTAINT.VITE_BASE_PREFIX;
return {
base: VITE_PUBLIC_PATH || "/",
resolve: {
alias: {
"@": "/src",
},
},
plugins: [
vue(),
federation({
name: "app1",
remotes: {
app2: "/federation/lianban2/assets/lianban2.js",
},
}),
topLevelAwait({
promiseExportName: "__tla",
promiseImportName: (i) => `__tla_${i}`,
}),
],
server: {
host: "",
force: true,
port: 89,
proxy: {
"/api": {
target: "http://apidev.szqerp.com/",
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ""),
},
"/federation/lianban2": {
target: "http://localhost:8080/",
changeOrigin: true,
rewrite: (path) => path.replace("/federation/lianban2", ""),
},
},
},
build: {
target: "es20",
brotliSize: false,
chunkSizeWarningLimit: 2000,
minify: false,
cssCodeSplit: true,
rollupOptions: {
output: {
manualChunks(id) {
if (id.includes("/vue@")) {
return "vue";
} else if (id.includes("/vue-router")) {
return "VueRouter";
} else if (id.includes("element-ui/lib/")) {
return "chunk-element-ui";
} else if (id.includes("@base/svg-icon")) {
return "lib_svgIcon";
} else if (id.includes("node_modules")) {
return id
.toString()
.split("node_modules/")[1]
.split("/")[1]
.toString();
}
},
},
},
},
};
});