umi3 多环境我们可以根据脚本配置环境变量,然后配置不同的umirc 或者config 文件,从而达到配置多环境的效果。
问题描述
umi4 发布了,还是按照umi3 的配置了多环境,
package.json
配置 了不同环境运行和编译脚本:
config
文件夹配置了不同环境对应文件:
发现在umi4 里有一个奇怪的现象,不论用哪个环境脚本运行,都走dev 环境变量。编译的时候都走prod 配置文件环境变量。
分析原因
看了下umi4 官方文档描述如下:
https://umijs.org/docs/guides/env-variables#umi_env
按照这个逻辑,执行uat 脚本应该会走uat 的配置文件,但是现在走的是dev 的呢?
发现删除了dev 这时候uat生效了。
再看备注的意思,意思是这三个环境变量根据环境自动设置,不能用脚本指定,运行时候如果设置了dev 会自动加载,编译会加载prod。
所以这三个名字不能用,然后换了名字,果然生效了。
问题解决
不使用dev/test/prod 配置名称。
这样就可以了。
吐槽
没有研究为什么这么设计,但是作为用户我感觉这么设计有两个缺点:
1、umi3 用户过渡不平滑、且文档第一时间没看懂
2、dev、test、prod 环境变量很常用,为什么设置?