Vue项目配置不同环境

查看环境变量:

webpack

查看环境变量:

js
console.log('当前环境:', process.env.NODE_ENV)
console.log('ZhixueApp_BASE_URL:', process.env.ZhixueApp_BASE_URL)

注入变量:

dev.env.js(开发环境)

js
/** @format */

'use strict';

var merge = require('webpack-merge');
var prodEnv = require('./prod.env');
var config = require('./index');

module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
  ,ZhixueApp_BASE_URL:'"/proxy"', //智学App开发环境
});

prod.env.js(生产环境)

js
/** @format */

'use strict';

module.exports = {
  NODE_ENV: '"production"',
  ,ZhixueApp_BASE_URL:'"https://ali-bg.zhixue.com/"',
};

test.env.js(测试环境)

js
/** @format */

'use strict';

var merge = require('webpack-merge');
var devEnv = require('./dev.env');

module.exports = merge(devEnv, {
  NODE_ENV: '"testing"',
  ZhixueApp_BASE_URL:'"https://test-ali-bg.zhixue.com/"',
});

设置代理:

config/index.js

js
module.exports = {
    // 开发配置
  dev: {
    assetsRoot: path.resolve(__dirname, '../dist'),
    // 静态资源文件夹
    assetsSubDirectory: 'assets',
    // 发布路径
    assetsPublicPath: '/',
    // Various Dev Server settings
    host: 'localhost',
    // dev-server监听的端口
    port: 8080,
    cssSourceMap: false,
    devtool: 'cheap-module-eval-source-map',
    // 代理列表, 是否开启代理
    proxyTable: {
      '/tfbyygl': {
      target: 'https://testnb.zhixue.com', 
        secure: false,
        changeOrigin: true
      }
    }
  },
}

验证环境变量

js
npm run dev
npm run build:test
npm run build:prod
js
 console.log('当前环境:', process.env.NODE_ENV)
 console.log('ZhixueApp_BASE_URL:',process.env.ZhixueApp_BASE_URL)

生产环境:

image-20251021104008281

测试环境:

image-20251021104956561

开发环境:

image-20251021104710156

vite

使用import.meta.env.MODE

js
/** 获取请求的基础地址 */
export function getBaseUrl () {
  let CONTEXTPATH = 'https://ali-bg.zhixue.com/'
  switch (import.meta.env.MODE) {
    case 'production':
      // 生产环境
      CONTEXTPATH = 'https://ali-bg.zhixue.com/'
      break
    case 'development':
      // 开发环境 - 使用代理避免跨域
      CONTEXTPATH = '/proxy/'
      // CONTEXTPATH = 'https://test-ali-bg.zhixue.com/'
      break
    case 'testing':
      // 测试环境 - 使用代理避免跨域
      CONTEXTPATH = 'https://test-ali-bg.zhixue.com/'
      break
    default:
      // 默认使用开发环境配置 - 使用代理避免跨域
      CONTEXTPATH = '/proxy/'
  }
  return CONTEXTPATH
}

设置代理:

vite.config.ts

ts
import { defineConfig, loadEnv } from 'vite';

// https://vite.dev/config/
export default defineConfig(({ mode }) => {
  console.log('mode', mode);
  const proxyTarget = mode === 'production' ? 'https://ali-bg.zhixue.com' : 'https://test-ali-bg.zhixue.com';
  const zxProxyTarget = mode === 'production' ? 'https://www.zhixue.com' : 'https://test.zhixue.com';
  const pdfProxyTarget = mode === 'production' ? 'https://zhixue-gc-bj-sc.oss-cn-beijing.aliyuncs.com' : 'https://zhixuetest-bj-sc.oss-cn-beijing.aliyuncs.com';
  
  return {
    server: {
      host: '0.0.0.0',
      port: 80,
      proxy: {
        '/proxy': {
          target: proxyTarget,
          changeOrigin: true,
          rewrite: (path: string) => path.replace(/^\/proxy/, '')
        },
        '/zx-proxy': {
          target: zxProxyTarget,
          changeOrigin: true,
          rewrite: (path: string) => path.replace(/^\/zx-proxy/, '')
        },
        '/pdf': {
          target: pdfProxyTarget,
          changeOrigin: true,
          rewrite: (path) => path.replace(/^\/pdf/, '')
        }
      }
    },
  };
});

评论

评论加载中……