import { defineConfig, loadEnv } from "vite"; import vue from "@vitejs/plugin-vue"; import vueJsx from "@vitejs/plugin-vue-jsx"; import path from "path"; import { viteStaticCopy } from "vite-plugin-static-copy"; import AutoImport from "unplugin-auto-import/vite"; import Components from "unplugin-vue-components/vite"; import { ElementPlusResolver } from "unplugin-vue-components/resolvers"; import gzipPlugin from "rollup-plugin-gzip"; // import eslintPlugin from 'vite-plugin-eslint'; const pathSrc = path.resolve(__dirname, "src"); const root = process.cwd(); // 开发 const apiTarget = "http://gateway.product.dev.com:30115/"; // const apiTarget = "172.16.34.80:18082"; const apiSluiceTarget = "http://shuili-admin.product.dev.com:30115"; // const apiTarget = 'http://sy.datametatech.com:60006/'; // https://vitejs.dev/config/ export default defineConfig(({ mode }) => { const env = loadEnv(mode, path.resolve(root, "./env")); return { envDir: "./env", base: env.VITE_BASE_URL, resolve: { alias: { "@": pathSrc, "~/": `${pathSrc}/`, }, }, css: { preprocessorOptions: { scss: { additionalData: `@use "~/theme/element/index.scss" as *;`, }, }, }, plugins: [ vue({ template: { compilerOptions: { isCustomElement: (tag) => tag.startsWith("iconpark-"), }, }, }), vueJsx(), AutoImport({ resolvers: [ElementPlusResolver()], }), Components({ // allow auto load markdown components under `./src/components/` extensions: ["vue", "md"], // allow auto import and register components used in markdown include: [/\.vue$/, /\.vue\?vue/, /\.md$/], resolvers: [ ElementPlusResolver({ importStyle: "sass", }), ], dts: "src/components.d.ts", }), viteStaticCopy({ targets: [ { src: "./node_modules/sy-cesium-sdk/dist/resources", dest: mode === "development" ? "/sgcyy-slgcyxgl/" : "", }, ], }), ], server: { host: "0.0.0.0", port: 6050, proxy: { "/proxy": { target: apiTarget, changeOrigin: true, }, "/iserver": { target: "http://172.16.34.41:8090", changeOrigin: true, }, "/api/iserver": { target: "http://172.16.34.41:8090", changeOrigin: true, rewrite: (path) => path.replace(/^\/api\/iserver/, "/iserver"), }, "/api/run": { target: "http://shuili.product.dev.com:30115/", // target: "http://172.16.34.80:18082", changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, "/tianhui-admin-web"), }, "/api": { target: "http://shuili.product.dev.com:30115/", // 'http://172.16.34.59:18083' changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, "/tianhui-admin-web"), }, "/geoserver": { target: "http://172.16.32.77:8700", changeOrigin: true, }, "/mapserver": { target: "http://172.16.34.71:8083/mapdata", changeOrigin: true, rewrite: (path) => path.replace(/^\/mapserver/, ""), }, "/images": { target: apiTarget, changeOrigin: true, }, "/objs": { target: apiTarget, changeOrigin: true, // rewrite: (path) => path.replace(/^\/sy-mixengine-ui/, '') }, }, }, build: { rollupOptions: { output: { manualChunks: { sycim: ["sy-cesium-sdk"], vue: ["vue"], }, }, plugins: [gzipPlugin()], }, chunkSizeWarningLimit: 6000, }, } as any; });