Vue ,React ,Angular多个服务器下部署同一个web项目,只需打一个包

前言:
有这样一个需求,需要在多个不同的服务器下部署同一个前端项目,(正常操作是每一台服务器都根据不同的IP地址build一个包依次部署,非常繁琐,因此简化为多个环境只需要用打一个包即可)

解决方案:首先需要服务器设置系统环境变量,在打包后部署到服务器,通过运行.sh文件来获取环境变量set到项目中

以下是vue项目为例, React ,Angular 均可以使用

1,在项目根目录创建 run.sh 文件

# 获取当前系统环境变量
API_URL="${apiUrl}" 
sed -i  "s|<body>|<body API_URL=\"$API_URL\"  >|" ./dist/index.html

注解:
第一行 apiUrl为当前系统配置的系统环境变量名称
第二行 将获取到的ip地址赋值到打包后的dist文件下index.html下的body中

2,项目中使用

// 在api的公共配置中使用
function createRequestFunction (service) {
  return function (config) {
    const token = localStorage.getItem('token')
    const API_URL = document.querySelector('body').getAttribute('API_URL')  // 使用获取的环境变量 
    const configDefault = {
      headers: {
        Authorization: token,
        'Content-Type': get(config, 'headers.Content-Type', 'application/json')
      },
      timeout: 600000,
      baseURL: 'http://' + API_URL ,
      data: {}
    }
    return service(Object.assign(configDefault, config))
  }
}

3,将打包后的dist文件上传到服务器后,运行 run.sh,运行完成,页面就可以正常请求啦~

运行命令如下,也可手动运行

bash run.sh

重要:需要在部署的服务器提前配置系统环境变量API_URL,否则获取不到

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容