CD配唱片
2025-04-23 24302671baee503ec23bb367c5d18fa3c28630c4
提交测试和开发
已修改5个文件
104 ■■■■ 文件已修改
.env.development 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.production 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.staging 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
vite.config.js 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.development
@@ -6,7 +6,7 @@
# 若依管理系统/开发环境
VITE_APP_BASE_API = '/dev-api'
VITE_API_URL = 'http://192.168.50.86:8080'
# 标识本地开发服务,用于GateWay转发到本地服务
# 配合后端服务
# VITE_APP_LOCAL = 'int'
.env.production
@@ -13,3 +13,6 @@
# 标识本地开发服务,用于GateWay转发到本地服务
# 配合后端服务
VITE_APP_LOCAL = 'int'
# 页面标题
VITE_APP_TITLE = APS
.env.staging
@@ -6,6 +6,8 @@
# 若依管理系统/生产环境
VITE_APP_BASE_API = '/stage-api'
VITE_API_URL = 'http://192.168.50.160:8080'
VITE_APP_LOCAL = 'int'
# 是否在打包时开启压缩,支持 gzip 和 brotli
VITE_BUILD_COMPRESS = gzip
package.json
@@ -7,7 +7,9 @@
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build:prod": "vite build",
    "dev:stage":"vite --mode staging",
    "build:prod": "vite build --mode production",
    "build:dev": "vite build --mode development",
    "build:stage": "vite build --mode staging",
    "preview": "vite preview"
  },
vite.config.js
@@ -1,58 +1,93 @@
import { defineConfig, loadEnv } from 'vite'
import path from 'path'
import createVitePlugins from './vite/plugins'
import { defineConfig, loadEnv } from "vite";
import path from "path";
import createVitePlugins from "./vite/plugins";
// export default defineConfig({
//   plugins: [vue()],
//   server: {
//     proxy: proxyConfig() // 使用动态配置的代理
//   }
// });
// https://vitejs.dev/config/
export default defineConfig(({ mode, command }) => {
  const env = loadEnv(mode, process.cwd())
  const { VITE_APP_ENV } = env
  const env = loadEnv(mode, process.cwd());
  const { VITE_APP_ENV, VITE_APP_BASE_API, VITE_API_URL } = env;
  console.log(VITE_APP_BASE_API, VITE_API_URL);
  // 根据环境变量动态设置代理
  const proxyConfig = () => {
    const devProxy = {
      "/dev-api": {
        target: "http://192.168.50.86:8080", // 开发环境的后端地址
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/dev-api/, ""),
      },
    };
    const testProxy = {
      "/stage-api": {
        target: "http://192.168.50.160:8080", // 测试环境的后端地址
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/stage-api/, ""),
      },
    };
    const prodProxy = {
      "/stage-api": {
        target: "http://192.168.50.160:8080", // 测试环境的后端地址
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/stage-api/, ""),
      },
    };
    switch (VITE_APP_ENV) {
      case "development":
        return devProxy;
      case "staging":
        return testProxy;
      default: // 默认开发环境
        return prodProxy;
    }
  };
  return {
    // 部署生产环境和开发环境下的URL。
    // 默认情况下,vite 会假设你的应用是被部署在一个域名的根路径上
    // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
    base: VITE_APP_ENV === 'production' ? '/' : '/',
    plugins: createVitePlugins(env, command === 'build'),
    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, "./"),
        // 设置别名
        '@': path.resolve(__dirname, './src')
        "@": path.resolve(__dirname, "./src"),
      },
      // https://cn.vitejs.dev/config/#resolve-extensions
      extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
      extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],
    },
    // vite 相关配置
    server: {
      port: 80,
      host: true,
      open: true,
      proxy: {
        // https://cn.vitejs.dev/config/#server-proxy
        '/dev-api': {
          target: 'http://192.168.50.86:8080',
          changeOrigin: true,
          rewrite: (p) => p.replace(/^\/dev-api/, '')
        }
      }
      proxy: proxyConfig(),
    },
    //fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file
    css: {
      postcss: {
        plugins: [
          {
            postcssPlugin: 'internal:charset-removal',
            postcssPlugin: "internal:charset-removal",
            AtRule: {
              charset: (atRule) => {
                if (atRule.name === 'charset') {
                if (atRule.name === "charset") {
                  atRule.remove();
                }
              }
            }
          }
        ]
      }
    }
  }
})
              },
            },
          },
        ],
      },
    },
  };
});