16 条回复  ·  227 次点击
78786381 初学 2024-10-11 10:47:53
不想走这些了就走一遍 nginx 代理,修改本地 host
Cheesen 初学 2024-10-11 11:00:36
多年开发经验建议不要用 env 来配置后端接口,一前端对一后还好,多对多就麻烦了。如果其他前端没有.env.local ,启动时可能会报错或者无法启动,如果写在.env.development 并且提交上去,那么必然会有冲突的几率。

以下是我的用法,仅供参考,前提是用 vite 。

修改 vite.config.ts 文件:

import { defineConfig } from 'vite'
import type { ConfigEnv, UserConfigExport } from 'vite'
// 添加 @inquirer/prompts 插件用于启动时做选择。
import { select } from '@inquirer/prompts'

export default async ({ command }: ConfigEnv): Promise<UserConfigExport> => {
  let proxyTarget = 'test'

  const servers: {
    [propName: string]: string
  } = {
    test: 'https://测试域名',
    prod: 'https://生产域名',
    张三: 'http://局域网 ip:端口',
    李四: 'http://局域网 ip:端口',
    王五: 'http://局域网 ip:端口',
  }
  if (command === 'serve') {
    proxyTarget = await select({
      message: '请选择后端接口地址',
      choices: Object.entries(servers).map(([key, value]) => ({
        name: `${key} - ${value}`,
        value: key,
      })),
    })
  }

  return defineConfig({
    server: {
      proxy: {
        '/api': {
          target: servers[proxyTarget],
        },
      },
    },
  })
}



这样一来,其他前端在启动项目的时候,可以自己选择指向任何后端接口。
Immortal 小成 2024-10-11 11:13:47
你们就 2 个人搞这些不是折腾自己么
直接连你电脑的 API 就行了,如果人多再考虑规范的事情
realpg 小成 2024-10-11 12:03:55
这种我更推荐配置找现成的轮子 实现好 "shell 的环境变量 环境变量文件" 的优先级顺序和忽略规则

shell 的环境变量优先于.env.dev

版本库中忽略 .env.dev 和 .env.release

但是版本库中放:
.env.dev.sample 和.env.release.sample 以便标注各个环境所需变量 并在 .env.dev.sample 中添加大量注释 备注好从系统环境变量读取优先级大于本文件的说明
evada 小成 2024-10-11 15:05:37
https://ngrok.com/ 可以把你的服务暴露在公网,直接连你本地测试
lizhien 小成 2024-10-11 16:00:21
.env 的回答有了  
git 可以临时忽略文件的,仅对自己有效  
git update-index --assume-unchanged
1024potato 小成 2024-10-11 16:11:44
还有一种防范: 使用 SwitchHosts 修改 host 文件,测试环境域名指向本机 ip
12
返回顶部