开发过程中,我们经常要配置不同的环境变量来区分环境。最近使用uim.js。它如何配置环境变量呢?
根据文档:多环境多份配置 和 定义代码中可访问变量define 做了如下配置:
// .umirc.local.js
export default {
define: {
ENV: 'local',
}
}
// .umirc.test.js
export default {
define: {
ENV: 'test',
}
}
// .umirc.pro.js
export default {
define: {
ENV: 'pro',
}
}
然后在package.json中配置相关的运行命令,如:
"dev": "cross-env UMI_ENV=local umi dev",
"pro": "cross-env UMI_ENV=pro umi dev",
"test": "cross-env UMI_ENV=test umi dev",
在代码中访问process.env只有NODE_ENV这个内置的环境变量,访问ENV,无论运行那条命令,一直都是local。十分困惑,官网也没做别的解释。后面在其GitHub issue 上找到了一种写法,尝试可以。
export default defineConfig({
define: {
"process.env.ENV": process.env.ENV
},
});
将umirc.xxx.js中的写法换成上面的写法,可以在代码中通过process.env.ENV访问到,而且值正确。