vite根据环境变量配置代理

本文介绍了如何在Vite中根据环境变量配置代理地址,使用cross-env和dotenv进行环境管理,创建.env.dev和.env.test文件,并在vite.config.ts中动态读取环境变量设置代理。通过修改package.json的脚本,可以方便地在dev和test环境中切换,实现不同环境的代理配置。
部署运行你感兴趣的模型镜像

vite中根据环境变量配置代理地址

安装需要装的包

当前使用的的是 cross-env 来跨平台设置环境变量

# 安装cross-env
npm i cross-env -D

安装 dotenv 来加载环境变量文件。dotenv 是一个零依赖的模块,它能将环境变量中的变量从 .env 文件加载到 process.env 中

npm i dotenv -D
创建环境变量文件

暂时我添加 dev 环境与 test 环境

touch .env.dev .env.test
  1. 修改 .env.dev 文件(代理地址可以修改为自己的,我这随便写的地址)
VITE_APP_PROXY_URL = https://www.baidu.com
VITE_APP_PROXY_DEVLOPER_URL = https://www.goole.com
VITE_APP_PORT = 3001
  1. 同样修改 .env.test 文件
    。。。。。
配置vite.config.ts
// ... 其他配置
import type { UserConfig } from 'vite'
import dotenv from 'dotenv'
}

try {
  // 根据环境变量加载环境变量文件
  const file = dotenv.parse(fs.readFileSync(`.env.${process.env.NODE_ENV}`))
  // 根据获取的key给对应的环境变量赋值
  for (const key in (file as object)) {
    process.env[key] = file[key]
  }
} catch (e) {
  console.error(e)
}
// 配置代理
const confg: UserConfig = {
	// ...其他配置
	server: {
    // 默认是 3000 端口
    port: Number(process.env.VITE_APP_PORT) || 3000,
    // 不默认打开浏览器
    open: false,
    proxy: {
      '^/.*-api': {
        target: process.env.VITE_APP_PROXY_URL,
        changeOrigin: true
      },
      '/developer-service': {
        target: process.env.VITE_APP_PROXY_DEVLOPER_URL,
        secure: false,
        changeOrigin: true,
      },
    }
  }
}
配置npm脚本
  1. 修改 package.json 文件
// 增加脚本 (注意 package.json 文件中不能有注释。。。)
// ...其他配置

"scripts": {
	// 通过 cross-env 创建一个环境变量 NODE_ENV = dev
	"dev": "cross-env NODE_ENV=dev vite",
	"test": "cross-env NODE_ENV=test vite",
	// 如果还有其他环境,也可以在下面继续添加
	"build": "vue-tsc --noEmit && vite build",
	"serve": "vite preview"
},

// ...
执行

执行脚本即可

# 这个时候就会执行 cross-env NODE_ENV=test vite
npm run test

这个时候可以看到执行结果了 端口为 3002,代理环境已经配置好了
在这里插入图片描述
当然你也可以配置环境变量干其他事情,比如说根据环境不同配置不同上传配置之类的。。。。。

您可能感兴趣的与本文相关的镜像

GPT-oss:20b

GPT-oss:20b

图文对话
Gpt-oss

GPT OSS 是OpenAI 推出的重量级开放模型,面向强推理、智能体任务以及多样化开发场景

Vite配置代理(Proxy)是解决开发过程中跨域问题的常用方法之一。可以通过 `vite.config.ts` 文件中的 `server.proxy` 选项来设置代理规则。以下是一个完整的配置示例和说明。 ### 基本代理配置 在 `vite.config.ts` 文件中添加 `server.proxy` 配置项,如下所示: ```typescript import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' export default defineConfig({ plugins: [vue()], server: { proxy: { '/api': { target: 'https://www.fastmock.site', // 代理的目标服务器地址 changeOrigin: true, // 是否更改请求的 origin rewrite: (path) => path.replace(/^\/api/, '') // 重写请求路径 } } } }) ``` 在这个例子中,所有以 `/api` 开头的请求都会被代理到 `https://www.fastmock.site` 服务器上。例如,请求 `/api/charles` 会被代理到 `https://www.fastmock.site/mock/5f5c83c74506389e42f1b7d88fad82f5/charles` [^1]。 ### 多个代理配置 如果需要配置多个代理,可以在 `proxy` 对象中添加多个键值对: ```typescript server: { proxy: { '/api1': { target: 'https://www.fastmock.site', changeOrigin: true, rewrite: (path) => path.replace(/^\/api1/, '') }, '/api2': { target: 'https://another-api-server.com', changeOrigin: true, rewrite: (path) => path.replace(/^\/api2/, '') } } } ``` ### 高级配置选项 Vite代理功能基于 `http-proxy-middleware` 实现,因此可以使用其支持的所有配置选项。例如,可以使用 `onProxyReq` 和 `onProxyRes` 来处理请求和响应: ```typescript server: { proxy: { '/api': { target: 'https://www.fastmock.site', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, ''), onProxyReq: (proxyReq, req, res) => { // 在代理请求发送之前执行一些操作 console.log('Proxy request:', req.url) }, onProxyRes: (proxyRes, req, res) => { // 在代理响应返回之后执行一些操作 console.log('Proxy response:', proxyRes.statusCode) } } } } ``` ### 使用环境变量动态配置代理 为了在不同环境中使用不同的代理配置,可以结合环境变量来实现。例如,在 `.env.development` 文件中定义代理地址: ```env VITE_API_BASEURL=https://www.fastmock.site ``` 然后在 `vite.config.ts` 中读取该环境变量: ```typescript import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue/' const env = loadEnv('development', process.cwd(), 'VITE_') export default defineConfig({ plugins: [vue()], server: { proxy: { '/api': { target: env.VITE_API_BASEURL, changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') } } } }) ``` 通过这种方式,可以在不同环境中灵活地配置代理地址 [^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值