import { defineConfig, loadEnv } from "vite"; import path from "path"; import createVitePlugins from "./vite/plugins"; // https://vitejs.dev/config/ export default defineConfig(({ mode, command }) => { const env = loadEnv(mode, process.cwd()); const { VITE_APP_ENV } = env; return { // 部署生产环境和开发环境下的URL。 // 默认情况下,vite 会假设你的应用是被部署在一个域名的根路径上 // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。 base: VITE_APP_ENV === "production" ? "/" : "/", plugins: createVitePlugins(env, command === "build"), resolve: { // https://cn.vitejs.dev/config/#resolve-alias alias: { // 设置路径 "~": path.resolve(__dirname, "./"), // 设置别名 "/@": path.resolve(__dirname, "./src"), "@": path.resolve(__dirname, "./src"), }, // https://cn.vitejs.dev/config/#resolve-extensions extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"], }, //本地运行配置,以及反向代理配置 server: { host: "localhost", https: false, //是否启用 http 2 cors: true, //为开发服务器配置 CORS , 默认启用并允许任何源 open: true, //服务启动时自动在浏览器中打开应用 port: Number(env.VITE_APP_PORT), strictPort: false, //设为true时端口被占用则直接退出,不会尝试下一个可用端口 force: false, //是否强制依赖预构建 hmr: true, //配置HMR proxy: { "/dev-api": { // target: 'http://172.1.2.76:9010/', //本地接口地址 // target: 'http://172.1.2.90:9010/', //本地接口地址 target: "http://10.10.10.56:9010/", //线上测试接口地址 changeOrigin: true, rewrite: (path) => path.replace(/^\/dev-api/, ""), }, }, }, //fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file css: { postcss: { plugins: [ { postcssPlugin: "internal:charset-removal", AtRule: { charset: (atRule) => { if (atRule.name === "charset") { atRule.remove(); } }, }, }, ], }, }, //打包配置 build: { //浏览器兼容性 "esnext"|"modules" target: "modules", //指定输出路径 outDir: "dist", //生成静态资源的存放路径 assetsDir: "assets", //小于此阈值的导入或引用资源将内联为 base64 编码,以避免额外的 http 请求。设置为 0 可以完全禁用此项 assetsInlineLimit: 4096, //启用/禁用 CSS 代码拆分 cssCodeSplit: true, //构建后是否生成 source map 文件 sourcemap: false, //自定义底层的 Rollup 打包配置 rollupOptions: {}, //@rollup/plugin-commonjs 插件的选项 commonjsOptions: {}, //当设置为 true,构建后将会生成 manifest.json 文件 manifest: false, // 设置为 false 可以禁用最小化混淆, // 或是用来指定使用哪种混淆器 // boolean | 'terser' | 'esbuild' minify: "terser", //terser 构建后文件体积更小 //传递给 Terser 的更多 minify 选项。 terserOptions: { compress: { //生产环境时移除console drop_console: true, drop_debugger: true, }, }, //设置为 false 来禁用将构建后的文件写入磁盘 write: true, //默认情况下,若 outDir 在 root 目录下,则 Vite 会在构建时清空该目录。 emptyOutDir: true, //chunk 大小警告的限制 chunkSizeWarningLimit: 500, }, optimizeDeps: { include: [ "vue", "vue-router", "pinia", "axios", "element-plus", "@vueuse/core", "echarts", "@/components/vform/designer.umd.js", ], }, }; });