import {
defineConfig,
loadEnv,
splitVendorChunkPlugin,
splitVendorChunk,
} from "vite";
import vue from "@vitejs/plugin-vue2";
import { join } from "path";
import { writeFileSync } from "fs";
import path from "path";
import resolveExternalsPlugin from "vite-plugin-resolve-externals";
import externalGlobals from "rollup-plugin-external-globals";
import federation from "@originjs/vite-plugin-federation";
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: "app2",
filename: "lianban2-legacy.js",
library: {
module: true,
},
exposes: {
"./lianban2": "./src/lianban2.vue",
},
}),
],
server: {
host: "",
force: true,
port: 90,
proxy: {
"/api": {
target: "http://apidev.szqerp.com/",
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ""),
},
},
},
build: {
target: "esnext",
minify: false,
cssCodeSplit: true,
rollupOptions: {
input: {},
output: {
manualChunks(id) {
writeContent(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();
}
},
},
},
},
};
});
const os = require("os");
const fs = require("fs");
function writeContent(content) {
fs.appendFile(
"./node_modules/chunknames.txt",
content + "\n" + os.EOL,
() => {}
);
}