UMI+DVA根据开发环境和生产环境不同动态加载变量

2024-04-06 07:08

本文主要是介绍UMI+DVA根据开发环境和生产环境不同动态加载变量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

你有没有遇到过这样的情况!比如你们有四种(或更多)环境:开发环境(本地调式代码环境)、测试环境(脏数据环境)、预生产环境(无限接近生产环境)、生产环境(正式环境或线上环境)等等环境。而对于不同环境你的静态资源host地址或者你的用户id等等可能是不一样的

只区分开发环境和生产环境

使用默认的环境变量 process.env.NODE_ENV
运行npm run start

console.log(process.env); // > {NODE_ENV: "development"}// NODE_ENV === "development" 开发环境 ; NODE_ENV === "production" 生产环境if (process.env.NODE_ENV === "production") {// 生产环境需要的操作setTitle(t);}

多个环境

umi 允许在 .umirc.js 或 config/config.js (二选一,.umirc.js 优先)中进行配置,支持 ES6 语法。
企业开发中通常会区分多个不同的环境,比如开发环境,测试环境,正式环境。不同个环境中需要请求不同的接口。

UMI_ENV

指定覆盖默认配置的配置文件。比如 UMI_ENV=prod umi build,那么则会用 .umirc.prod.js 覆盖 .umirc.js。或者是 config/config.prod.js 覆盖 config/config.js。注意是覆盖而不是替换,.umirc.prod.js 中没有的配置者会使用 .umirc.js 中的配置。

另外,开发模式下 .umirc.local.js 或者 config/config.local.js 中的配置永远是优先级最高的。

编码实战

step1 下载 cross-env 插件

npm install --save-dev cross-env

step2 新建配置文件

根目录下新建此格式的.umirc.参数名.jsjs文件,示例如下
在这里插入图片描述
文件内容如下

// .umirc.prod.js 或者 config/config.prod.js
export default {define: {"process.env": {NODE_ENV: 'prod'}, // 修改process.env对象数据GLOBAL_VAR: "global_var", // 直接增加全局变量},
};

step3 修改package.json文件

修改后内容如下

 "scripts": {"start": "umi dev","build": "umi build","build:test": "cross-env UMI_ENV=test umi build","build:prod": "cross-env UMI_ENV=prod umi build","eslint": "eslint --ext .js --ext .jsx ./src","lint-staged": "lint-staged"},

step4 修改js文件,根据环境变量进行不同输出

console.log('GLOBAL_VAR', GLOBAL_VAR) // > global_var
console.log('process.env.NODE_ENV', process.env.NODE_ENV) // > prod// NODE_ENV === "development" 开发环境 ; NODE_ENV === "production" 生产环境
if (process.env.NODE_ENV === "prod") {// 生产环境需要的操作
}

step5 运行命令

命令结构如下npm run build:参数名

npm run build:prod

此处参数名未新建配置文件处的参数名

step6 观察控制台打印

'GLOBAL_VAR', 'global_var'
'process.env.NODE_ENV', 'prod'

参考资料

react-多环境配置
UmiJS 配置 define

这篇关于UMI+DVA根据开发环境和生产环境不同动态加载变量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/879316

相关文章

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

Python变量与数据类型全解析(最新整理)

《Python变量与数据类型全解析(最新整理)》文章介绍Python变量作为数据载体,命名需遵循字母数字下划线规则,不可数字开头,大小写敏感,避免关键字,本文给大家介绍Python变量与数据类型全解析... 目录1、变量变量命名规范python数据类型1、基本数据类型数值类型(Number):布尔类型(bo

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可