基于antd-pro框架,配置package.json中的打包命令,实现不同环境使用不同的接口apiUrl前缀,避免人肉修改,保证各环境对应各自的api地址。

背景

这阵子,在玩antd-pro,感觉整体框架基本是一套很完善的管理系统,因此也将该套框架运用到实际项目中,UI、组件啥的都没有问题,就是在打包部署的时候,本地开发、测试、线上接口api前缀不同,打包发布到测试环境和线上环境,需要人为的去修改config中的path配置,感觉多少有点不方便,而且也容易出现问题。鉴于这个背景,在闲暇之余,研究了一下umi中的参数配置,将这个风险性事件,一次性从源头解决。

解决思路

  1. 结合目前的情况,我们现有三个环境,本地开发、测试环境、预发布环境、生产环境,各个环境除了接口api的前缀不同之外没有其他差别。
  2. 我们应该在打包命令中,配置三个命令devbuild(test在命令中已被使用成测试)、prod
  3. 我们的程序代码,根据不同的打包命令,去配置对应环境下的接口apiUil前缀。

具体实现

package.json

    "dev": "cross-env UMI_ENV=dev umi dev","build": "cross-env UMI_ENV=test umi build","prod": "cross-env UMI_ENV=prod umi build",

我们通过cross-env设置一个参数UMI_ENV,分别赋值为devtestprod,对应开发测试线上环境。

config/config.js

我们需要在define中,配置一下我们的环境变量,通过 webpack 的 DefinePlugin 传递给代码

  define: {'process.env.UMI_ENV':process.env.UMI_ENV || 'dev',},

其实这里,已经可以直接配置apiUrl了,只是前期,我们加了一个全局的配置文件,为了减少修改,这里还是用一个环境变量process.env.UMI_ENV存储一下

全局的path.js

let path = 'http://10.0.7.24:13019/api';
console.log('环境',process.env.UMI_ENV)
if(process.env.UMI_ENV==='test'){path = 'http://10.0.7.6:13019/api'
}
if(process.env.UMI_ENV==='prod'){path = 'https://xxx.yyy.com/api'
}
export default path;

具体的打包

# 本地开发
npm run dev# 打包测试环境
npm run build# 打包生产环境
npm run prod

注意

  1. 此处在path.js中打印process.env会发现,并没有UMI_ENV属性,这个假象也一度让我觉得值没有传递过来,但是实际通过process.env.UMI_ENV能够获取到我们设定的参数,这个地方为何看不到属性,我也在查询中

参考

umi 配置多环境打包
define 通过 webpack 的 DefinePlugin 传递给代码

基于antd pro框架,配置接口apiUrl前缀相关推荐

  1. java antd实现登录,基于 antd pro 的短信验证码登录

    概要 整体流程 前端 页面代码 请求验证码和登录的 service (src/services/login.js) 处理登录的 model (src/models/login.js) 后端 短信验证码 ...

  2. antd.pro中表格的国际化处理

    antd.pro最近更新额V5版本,于是使用了最新的版本.V5版本抛弃了dva的数据流配置方式(狗头:原因就是配置太繁琐了,你要为每个module配置module文件,并且使用generator的方式 ...

  3. 实习手册一(Python基于Tornado框架的接口响应服务)软件下载与环境配置

    目录 一.软件下载及环境配置: 1.Homebrew 2.python3.9 3.PyCharm专业版 4.MySQL 5.Navicat for MySQL 6.Redis 7.Postman 此次 ...

  4. 接口自动化平台(一):antd + antd pro 安装和简介

    目录 1. antd 1.1 进入ant.design官网做初步了解 1.2 安装antd 1.3 动手实际操作 2. ant design pro 2.1 antd pro介绍 2.2 antd p ...

  5. python自动化框架pytest接口关联串联_基于python接口自动化框架搭建_pytest+jenkins+allure...

    本接口测试框架使用python语言实现,基于pytest测试框架,同时集成Jenkins和Allure 核心特性 封装requests请求,使用装饰器模式 详细的请求日志输出 环境与数据隔离,实现不同 ...

  6. 基于layui的框架模版,采用模块化设计,接口分离,组件化思想

    代码地址如下: http://www.demodashi.com/demo/13362.html 1. 准备工作 编辑器vscode,需要安装liveServer插件在前端开启静态服务器 或者使用hb ...

  7. antd pro中如何使用mock数据以及调用接口

    antd pro的底层基础框架使用的是dva,dva采用effect的方式来管理同步化异步 在dva中主要分为3层 services  models  components models层用于存放数据 ...

  8. 基于springboot的支持http接口+dubbo接口的TestNG自动化测试框架

    一.背景 由于大多数公司都是使用Java作为后端开发语言,因此为了更好的与研发的框架对接.测试,掌握一套Java的自动化测试框架也逐渐成为测试人员的必修课. 同时随着现在微服务框架的流行,自动化测试框 ...

  9. 无线专题 openwrt feeds、web框架luci(lua语言)、UCI (统一配置接口)

    1.openwrt feeds UCI (统一配置接口)openwrt官方说明(有中文版本):https://oldwiki.archive.openwrt.org/zh-cn/doc/uci 在Op ...

最新文章

  1. BZOJ2127happiness——最小割
  2. python print 用法
  3. mysql驱动为什么自动加载_为什么JDBC中加载驱动要使用反射?
  4. 重庆考区非计算机专业二级等级考试vf上机题怎么建立程序文件?,计算机等级考试一级上机试题...
  5. c语言学生考勤系统课设报告,C语言课程设计总结报告学生考勤系统设计
  6. 公用机房计算机主板选购,才知道,IDC机房运维工作居然可以如此简单!
  7. 请画出使用mapreduce对英文句子_「Postgresql架构」用MapReduce的方式思考,但使用SQL...
  8. 谈谈java中成员变量与成员方法继承的问题
  9. Python Series库Api整理
  10. linux内核串口调试,linux 串口调试方法
  11. linux socket编程:简易客户端与服务端
  12. mysql 临时列可以判断,mysql数据库常用命令
  13. Centos7 Kubernetes(k8s) 开发服务器(单服务器)部署 mariadb/mysql 数据库
  14. mysql 删除创建表分区,MySQL分区表创建,分区创建、删除示例
  15. 彻底解决乱码问题(一):为何会出现乱码
  16. substring字符串截取
  17. bilibili账号申诉中心_B站的申诉渠道究竟在哪啊
  18. Instagram帐户几种不同类型的封号情况及解决方案
  19. day75,爬虫02,webmagic入门程序,组件介绍:Downloader,PageProcess,pipeline,Scheduler,51jop招聘网站综合案例
  20. truncate和delete的区别

热门文章

  1. Google 宣布 GSoC 2014 计划Fwd: Google Summer of Code 2014 + 10 Things
  2. Eclipse详细安装教程(win10)
  3. 美团2021校招笔试题 最优二叉树II
  4. arm cache ace chi
  5. anaconda的正确安装
  6. 解决eclipse中java各类中文乱码问题
  7. 组合导航(二):导航参考坐标系
  8. 群晖php配置支持后端,群晖NAS服务器iSCSI管理器配置连接及使用说明
  9. kmp算法,小试牛刀
  10. 小红书KOC和KOL这两者怎样进行投放?